您使用派生表的每一次,該查詢將被執行。在使用CTE時,該結果集在單個查詢中僅被撤回一次。是派生表執行一次還是三次?
是否報價表明,下面的查詢將導致它的派生表(每個聚合函數的調用一次)被執行三次:
SELECT
AVG(OrdersPlaced),MAX(OrdersPlaced),MIN(OrdersPlaced)
FROM (
SELECT
v.VendorID,
v.[Name] AS VendorName,
COUNT(*) AS OrdersPlaced
FROM Purchasing.PurchaseOrderHeader AS poh
INNER JOIN Purchasing.Vendor AS v ON poh.VendorID = v.VendorID
GROUP BY v.VendorID, v.[Name]
) AS x
感謝名單
「報價從哪裏來?」 http://facility9.com/2008/12/09/a-quick-introduction-to-common-table-expressions – AspOnMyNet 2010-05-04 19:11:18
「但它可以在後臺導出結果,因此只需要一次訪問。」線軸是什麼意思? – AspOnMyNet 2010-05-04 19:11:52
它可能會生成一個內部臨時表,以避免3次讀取派生表。 「spool」是您在查詢計劃 – gbn 2010-05-04 19:12:46