zoukankan      html  css  js  c++  java
  • 假如 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...
    也可以通过实际速度来查看...

  • 相关阅读:
    [51nod1299]监狱逃离
    [51nod1206]Picture
    noi 2016 游记
    [Codeforces 696D] Legen...
    [bzoj2574] [Poi1999]Store-Keeper
    [bzoj1227] [SDOI2009]虔诚的墓主人
    [bzoj3979] [WF2012]infiltration
    Docker
    SpringBoot实现登录
    SpringBoot第一次案例
  • 原文地址:https://www.cnblogs.com/aspirant/p/5732140.html
Copyright © 2011-2022 走看看