select id from a not in (1,2,3,4,5)优化一下这个sql
时间: 2023-09-08 10:08:53 浏览: 67
可以尝试用`not exists`或`left join`的方式代替`not in`,因为`not in`的查询效率比较低,而且当被比较的列表比较大时,效率会更低。以下是两种优化方式的示例代码:
使用not exists:
```
select id from a where not exists (select 1 from b where a.id = b.id and b.id in (1,2,3,4,5));
```
使用left join:
```
select a.id from a left join b on a.id = b.id and b.id in (1,2,3,4,5) where b.id is null;
```
这里假设表b中存储了需要排除的id,如果需要排除的id比较少,那么使用`not in`也可以,但是如果需要排除的id比较多,那么使用上述两种方式会更有效率。
阅读全文