带有OR子句的MySql JOIN查询非常慢

Dre*_*ejc 2 mysql

我有以下查询:

SELECT a.id, b.from, b.to FROM a INNER JOIN b ON a.id = b.from OR a.id = b.to;
Run Code Online (Sandbox Code Playgroud)

这是非常缓慢的。

如果我删除 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; 
Run Code Online (Sandbox Code Playgroud)

如何加速原始查询(设置索引)或重新设计查询本身?

Mik*_*ike 5

使用联合怎么样?

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
Run Code Online (Sandbox Code Playgroud)