最近遇到一个SQL性能问题。SQL语句如下:SELECT * FROM aWHERE id NOT IN(SELECT a_id FROM b)。根据网上的优化方案将NOT IN更改为NOT EXISTS或LEFT JOIN / a_id IS NULL方式,但效果没有改变,反而NOTEXISTS会更慢,最终将b表的a_id添加索引,三种方式的性能均有很大提升,但三种方式之间并没有很大差别。所以想请教一下这三种方式的查询原理到底是什么?为什么大家都会推荐将IN方式换为EXISTS和LEFT JOIN/NULL呢?测试环境:ubuntu 12.04 server 64bit + mysql 5.0 |
|
|
|
|
共 1 个关于本帖的回复 最后回复于 2013-7-16 10:59