1
我想选择一些项目从表1 不在表2。 表1约有3百万行,表2约有8,000。我已经有表1(过期,不可靠,阻止,删除,标志,expirationDate)的索引。我该如何优化:如何优化左连接查询的大表
SELECT table1.*
FROM table1
LEFT JOIN table2
ON table1.item_ID = table2.item_ID
WHERE table1.expire = '0'
AND table1.unreliable = '0'
AND table1.block = '0'
AND table1.deleted = '0'
AND table1.flag = '0'
AND table1.expirationDate >= CURDATE()
AND table2.item_ID IS NULL
GROUP BY item_ID
LIMIT 5000
但不应该这些索引存在,因为item_ID是两个表中的主键? – user2694306
你没有说'item_ID'是你的主键。我不确定mysql是否会自动为主键创建索引。我相信要记住,情况并非如此。你可以简单地使用'SHOW INDEX'来检查。如果它不显示这样的索引,它不存在。 –
啊,你是对的,它不是第二张表中的主键。现在它似乎运作良好。谢谢! – user2694306