我是靠谱客的博主 认真嚓茶,最近开发中收集的这篇文章主要介绍假如 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...
也可以通过实际速度来查看...

 

转载于:https://www.cnblogs.com/aspirant/p/5732140.html

最后

以上就是认真嚓茶为你收集整理的假如 UNION ALL 里面的子句 有 JOIN ,那个执行更快呢的全部内容,希望文章能够帮你解决假如 UNION ALL 里面的子句 有 JOIN ,那个执行更快呢所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部