繁体   English   中英

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

[英]query with multiple or vs union multiple queries, which one will be faster?

顾名思义,带有多个或的查询会更快,或者带有并集的多个查询的查询会更快? 为了简化起见,我仅加入了两个表,但可以加入更多表。

例如,

    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%'  

      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次,而在第一次扫描中,您只需扫描一次,对于每个加入的记录,您都可以应用条件。

顶级查询将效率更高,因为您只查询一次数据。 也就是说,如果您要查询的数据是不会返回的,最好将这些条件放在WHEREIN子句中。 在您提供的示例中,它看起来像这样:

SELECT isbn, booktitle
FROM book as b 
WHERE 
   booktitle LIKE '%mysql%' or
   isbn like '%mysql%' or
   b.publisherid in (SELECT publisherid FROM publisher WHERE publishername like '%mysql%')

在过滤列(在本例中为发布者名称)上具有适当的索引的情况下,MySQL将优化每一部分并更有效地组合它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM