더북(TheBook)

뷰를 참조하는 뷰는 생성하지 말자

다른 뷰를 참조하는 뷰를 생성하는 것은 가능하다. 이것은 명령형 프로그래밍 언어에 있는 프로시저를 처리하는 방식으로 뷰를 사용하는 것인데, 이렇게 하면 큰 실수를 할 수 있고 성능과 관리적 문제점을 일으킨다. 이런 뷰는 사용 이점을 모두 갉아먹는 결과만 낳을 뿐이다. 코드 3-3은 다른 뷰를 참조하는 뷰를 생성하는 예제이다.

코드 3-3 세 가지 뷰 생성

CREATE VIEW vActiveCustomers AS

SELECT c.CustomerID, c.CustFirstName, c.CustLastName,

  c.CustFirstName + ‘ ‘ + c.CustLastName AS CustFullName

FROM Customers AS c

WHERE EXISTS

  (SELECT NULL

  FROM Orders AS o

  WHERE o.CustomerID = c.CustomerID

    AND o.OrderDate > DATEADD(MONTH, -6, GETDATE()));

 

CREATE VIEW vCustomerStatistics AS

SELECT o.CustomerID, COUNT(o.OrderNumber) AS OrderCount,

  SUM(o.OrderTotal) AS GrandOrderTotal,

  MAX(o.OrderDate) AS LastOrderDate

FROM Orders AS o

GROUP BY o.CustomerID;

 

CREATE VIEW vActiveCustomerStatistics AS

SELECT a.CustomerID, a.CustFirstName, a.CustLastName,

  s.LastOrderDate, s.GrandOrderTotal

FROM vActiveCustomers AS a

  INNER JOIN vCustomerStatistics AS s

    ON a.CustomerID = s.CustomerID;


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.