假如 UNION ALL 里面的子句 有 JOIN ,那个执行更快呢
比如: select id, name from table1 where name = 'x' union all select id, name from table2 where name = 'x'
与
select * from (select id, name from table1 union all select id, name from table2) where name = 'x'.
哪一种方式性能更好一些呢? 希望高手能详细说明下, 并且考虑到有索引和无索引的情况
结果:
先 JOIN 缩小数据集,然后 用UNION 更快
建议使用先where再union的方式,通过过滤得到小的数据量,然后再去和其他数据做join 等处理,这应该是数据处理的一个原则。当然了,将过多的数据抓过来,经过了层层处理,最后再通过条件去过滤,这也是效率低下语句的通病。
不过,对于你的两条语句,有可能他们的执行计划都是一样的,不管有没有索引的情况。
先用where过滤,再用union快......可以用执行计划查看COST...
也可以通过实际速度来查看...
本文来自博客园,作者:aspirant,转载请注明原文链接:https://www.cnblogs.com/aspirant/p/5732140.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?