이런 뷰에는 몇 가지 잠재적인 문제점이 있는데, DBMS에 따라 그 양상이 다르다. 하지만 일반적으로 옵티마이저는 뷰를 보는 순간 일단 그 뷰를 분해한다. 분해한 뷰에 또 다른 뷰가 있다면 이런 뷰도 분해한다. 이상적인 관점에서 보면 옵티마이저는 이 뷰 세 개를 코드 3-4와 같이 효율적인 인라인 형태의 문장으로 결합한다.
코드 3-4 뷰를 결합한 문장
SELECT c.CustomerID, c.CustFirstName, c.CustLastName,
s.LastOrderDate, s.GrandOrderTotal
FROM Customers AS c
INNER JOIN
(SELECT o.CustomerID,
SUM(o.OrderTotal) AS GrandOrderTotal,
MAX(o.OrderDate) AS LastOrderDate
FROM Orders AS o
GROUP BY o.CustomerID) AS s
ON c.CustomerID = s.CustomerID
WHERE EXISTS
(SELECT NULL
FROM Orders AS o
WHERE o.CustomerID = c.CustomerID
AND o.OrderDate > DATEADD(MONTH, -6, GETDATE()));
코드 3-4에서는 실제로 사용되지 않는 특정 컬럼이나 표현식을 제거했다. 특히 주 쿼리와 서브쿼리 어디에도 없는 OrderCount와 CustFullName은 없애 버렸다. 하지만 실제로는 중간 결과를 산출하는 또 다른 중간 결과의 집합을 조인하는 모든 표현식 계산을 포함해서 이 뷰에 있는 내용들을 옵티마이저가 미리 처리할 것이다. 힘들여 모든 계산을 수행했음에도 최종 뷰에서 사용하지 않아 일부 표현식을 버린 것이다.