顾名思义,使用多个或的查询会更快,或者使用联合加入多个查询的查询会更快吗?我只加入了两个表来使它变得简单但是在连接中可以有更多的表。
例如,
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%'
答案 0 :(得分:0)
我看不出你的工会会更快。您必须扫描并加入3次,而在第一次扫描和加入时,您只扫描一次,并且对于每个加入的记录,您都可以应用标准。
答案 1 :(得分:0)
由于您只查询一次数据,因此最高效率会更高效。也就是说,如果您要查询的数据不会返回,那么将这些条件放在IN
的{{1}}子句中会更好。在您提供的示例中,它看起来像这样:
WHERE
通过过滤列上的适当索引(在本例中为publishername),MySQL将优化每个部分并更有效地组合它们。
答案 2 :(得分:0)