您使用派生表的每一次,该查询将被执行。在使用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