首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >issue性能问题

issue性能问题
EN

Stack Overflow用户
提问于 2015-12-11 06:27:00
回答 1查看 978关注 0票数 0

我有两种查询做了同样的工作

查询1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
;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

在实际环境中,查询将更加复杂,这只是供其他人阅读的一个简单版本。

问题:

  1. 在性能和冗余的基础上,使用CTE而不是每次使用JOIN更好吗?
  2. 是否有更好的方法来执行此UNION,甚至UNION ALL查询,而不是这些方式。
EN

回答 1

Stack Overflow用户

发布于 2015-12-11 06:35:16

我不认为CTE和加入你的案子会有太大的区别。Server优化将将其转换为完全不同的查询,这两个查询可能会产生相同的结果。如果选择性很高,可以尝试在TotalAmount和Quantity上添加索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34217370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档