我有两种查询做了同样的工作
查询1:
SELECT MP.MemberName FROM MemberProfile MP
LEFT JOIN Order O ON MP.MemberID = O.MemberID
WHERE O.TotalAmount >= 100
UNION
SELECT MP.MemberName FROM MemberProfile MP
LEFT JOIN Order O ON MP.MemberID = O.MemberID
WHERE O.Quantity >= 10查询2:
;WITH cte AS (
SELECT MP.MemberName, O.Quantity, O.TotalAmount FROM MemberProfile MP
LEFT JOIN Order O ON MP.MemberID = O.MemberID
)
SELECT MemberName FROM cte WHERE TotalAmount >= 100
UNION
SELECT MemberName FROM cte WHERE Quantity >= 10在实际环境中,查询将更加复杂,这只是供其他人阅读的一个简单版本。
问题:
发布于 2015-12-11 06:35:16
我不认为CTE和加入你的案子会有太大的区别。Server优化将将其转换为完全不同的查询,这两个查询可能会产生相同的结果。如果选择性很高,可以尝试在TotalAmount和Quantity上添加索引。
https://stackoverflow.com/questions/34217370
复制相似问题