MySQL 5.5.8:
问题 1:
以下陈述是否有任何不同,如果有,哪一个是首选的性能明智的?甚至可以在不知道 where 子句前后表的行数以及可能的索引用法的情况下回答这个问题吗?
SELECT *
FROM a JOIN b ON a.id = b.id AND a.col2 BETWEEN 1 AND 5;
SELECT *
FROM a JOIN b ON a.id = b.id
WHERE a.col2 BETWEEN 1 AND 5;
Run Code Online (Sandbox Code Playgroud)
我问的原因是因为例如,如果表很大,但 where 子句过滤掉了 99.9999% 的记录,如果在连接后 99.9999% 的记录没有被使用,我不想浪费时间连接大量表。
问题2:
采取相同的情况,哪个语句(如果有任何不同)需要更少的 IOPS。(索引出现在 b.id 上,一个出现在 a.col2 上)