数据库优化技巧之in和not in

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库优化技巧之in和not in相关的知识,希望对你有一定的参考价值。

在编写SQL语句时,假设要实现一张表有而另外一张表没有的数据时。 通常第一直觉的写法是:

select * from table1 where table1.id not in(select id from table2)

这样的写法尽管看起来非常直观。可是运行的效率会非常低下,在数据量非常大的时候效果尤其明显,我们推荐使用not exists或左连接来取代。

select a.* from table1 a left join table2 b on a.id=b.id where b.id is null

相同。这样的方法也适用于in

以上是关于数据库优化技巧之in和not in的主要内容,如果未能解决你的问题,请参考以下文章

SQL优化- in和not in

没有 Not In 和 In 使用连接的 SQL 查询优化

MS Sql 优化步骤及优化not in一例

SQL优化 - 避免使用 IN 和 NOT IN

MySQL优化2之SQL常用技巧

Sql server not in优化