以下查询突然变得异常缓慢(似乎根本没有完成),表 a 中有超过25.000行(尝试在查询中添加限制 x):
select a.*, b.column
from table_a a
left join table_b b
on (a.message_id = b.message_id)
where date_sub(curdate(), interval 30 day) < a.date
and (
b.message_id is NULL or
(
b.message_id is not NULL
and a.message_id = b.message_id
and b.redeemed > 0
)
)
order by a.id DESC
a.message_id
和都有一个索引b.message_id
。table_a 的行数将比table_b
我知道左连接与is NULL组合会导致 mysql 服务器达到其限制,但我不知道如何重写查询以避免左连接。
基本上我想查询表a并检查表b中是否有匹配的条目。如果是这种情况,我想将表 b 中的日期合并到结果中。
非常感谢任何帮助!