假如 UNION ALL 里面的子句 有 JOIN ,那个执行更快呢
2016-08-03 11:27
253 查看
比如: 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...
也可以通过实际速度来查看...
与
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...
也可以通过实际速度来查看...
相关文章推荐
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- SQL优化——SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- hadoop的mapreduce的join操作原理【里面用例子讲解的,但是没理解,怎么执行程序】
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- SQL各个子句: outer join,on,where,group by,having,select case子句执行
- SQL各个子句: outer join,on,where,group by,having,select case子句执行
- 指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- SQL子句执行顺序和Join的一点总结
- ActivityGroup里面装的子Activity不执行OnActivityResult()的解决办法
- div里面加上ul li 后,这个div与它上面的那个div之间就会出现一小段空白
- try{}里面有return,finally{}是在return之前执行还是之后