Mar*_*son 3 mysql sql performance left-join
我有一个SQL查询,它连接or-condition上的另一个表,如下所示:
select a.id,b.id from a left join b on (b.prop1=a.id or b.prop2=a.id)
1026 rows in set (12.77 sec)
Run Code Online (Sandbox Code Playgroud)
如果我将查询分成两个,没有或条件,它会快得多:
select a.id,b.id from a left join b on (b.prop1=a.id)
1026 rows in set (0.03 sec)
select a.id,b.id from a left join b on (b.prop2=a.id)
1026 rows in set (0.04 sec)
Run Code Online (Sandbox Code Playgroud)
更快,但我手动必须结合两个查询的结果.
为什么我的初始查询如此之慢?我该怎么做才能让它更快?
我正在使用mysql 5.5.35
尝试并使用a UNION代替OR
select a.id,b.id from a left join b on (b.prop1=a.id)
UNION ALL
select a.id,b.id from a left join b on (b.prop2=a.id)
Run Code Online (Sandbox Code Playgroud)
这应该比它更快 OR