使用EXISTS 替代IN,用NOT EXISTS 替代 NOT IN,无论在哪种情况下, NOT IN效率都是最低的,如下:
使用LEFT JOIN 替换 IN,如下:
如上,我们使用了一下方式优化了IN 和 NOT IN:
- 使用between 替换 in。
- 使用exists替代in、用not exists替代 not in。
- 使用left join 替换 in。
应尽量避免在 WHERE 子句中对 “=” 左边的字段进行函数、算术运算及其他表达式运算,可以将表达式运算移至“=”右边,否则将导致引擎放弃使用索引而进行全表扫描。
对索引字段使用函数,如下:
对索引字段进行计算,如下: