sql优化
1、not in 的优化
not in和not exists不会命中索引,可以优化为通过left join实现;
例如要查询存在于a表但不存在与b表的数据,比较容易理解的sql写法:
SELECT * FROM table_a WHERE id NOT IN (SELECT aid FROM table_b)
1
可以利用left join保左、不保右的特性,改为如下sql,效果是一样的,但是如果b表的aid有索引,那么下面的方法可以命中索引,上面的方法一般不会命中索引
SELECT * FROM table_a a
LEFT JOIN table_b b ON a.id=b.aid
WHERE b.aid IS NULL