查询多个或vs联合多个查询,哪一个会更快?

时间:2010-11-12 12:27:47

标签: mysql optimization query-optimization unions

顾名思义,使用多个或的查询会更快,或者使用联合加入多个查询的查询会更快吗?我只加入了两个表来使它变得简单但是在连接中可以有更多的表。

例如,

    select isbn, booktitle from book as b left join publisher as p
        on b.publisherid = p.publisherid
        where 
           booktitle like '%mysql%' or
           isbn like '%mysql%' or
           publishername like '%mysql%'  

VS

      select isbn, booktitle from book as b left join publisher as p
   on b.publisherid = p.publisherid
   where 
    booktitle like '%mysql%'  
   union 
   select isbn, booktitle from book as b left join publisher as p
   on b.publisherid = p.publisherid
   where 
    isbn like '%mysql%' 
   union 
   select isbn, booktitle from book as b left join publisher as p
   on b.publisherid = p.publisherid
    where 
    publishername like '%mysql%'  

3 个答案:

答案 0 :(得分:0)

我看不出你的工会会更快。您必须扫描并加入3次,而在第一次扫描和加入时,您只扫描一次,并且对于每个加入的记录,您都可以应用标准。

答案 1 :(得分:0)

由于您只查询一次数据,因此最高效率会更高效。也就是说,如果您要查询的数据不会返回,那么将这些条件放在IN的{​​{1}}子句中会更好。在您提供的示例中,它看起来像这样:

WHERE

通过过滤列上的适当索引(在本例中为publishername),MySQL将优化每个部分并更有效地组合它们。

答案 2 :(得分:0)