我有一个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)
如果我将查询拆分为两个,没有或条件,则速度要快得多:
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)
要快得多,但我手动必须合并两个查询的结果。
为什么我的初始查询如此之慢?我该怎么做才能让它更快?
我使用的是mysql 5.5.35
答案 0 :(得分:6)
尝试使用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)
这应该比OR