使用OR子句的MySql JOIN查询速度非常慢
我有以下疑问:使用OR子句的MySql JOIN查询速度非常慢,mysql,Mysql,我有以下疑问: SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id = b.from OR a.id = b.to; 这是非常缓慢的 如果我删除OR子句并分别运行每个查询,那么这两个查询将在1秒内执行 SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id = b.from; SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id =
SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id = b.from OR a.id = b.to;
这是非常缓慢的
如果我删除OR子句并分别运行每个查询,那么这两个查询将在1秒内执行
SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id = b.from;
SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id = b.to;
如何加快原始查询的速度(设置索引)或重新设计查询本身?以下内容如何。只需加入
b
两次:
SELECT a.id, b.from, b2.to
FROM a
INNER JOIN b ON a.id = b.from
INNER JOIN b b2 ON a.id = b2.to;
如果两种情况下都没有记录,则可能必须使用左联接。使用union如何
SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id=b.from
UNION
SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id=b.to
您能提供表的详细信息吗?有关性能的问题通常需要适当的DDL和解释—不完全是解决方案,但足以修复我的查询。我使用union来减少外部select上发生的连接的行数,例如:select*FROM(select…union select)内部连接。