![](/img/trans.png)
[英]Which is faster? Update multiple rows in one single query OR foreach() of single queries
[英]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次,而在第一次扫描中,您只需扫描一次,对于每个加入的记录,您都可以应用条件。
顶级查询将效率更高,因为您只查询一次数据。 也就是说,如果您要查询的数据是不会返回的,最好将这些条件放在WHERE
的IN
子句中。 在您提供的示例中,它看起来像这样:
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.