求优化一句sql语句,not in速度太慢了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求优化一句sql语句,not in速度太慢了相关的知识,希望对你有一定的参考价值。
select tbl1.id from table1 tbl1 where tbl1.id not in (select tbl2.id from table2 tbl2);
tbl1有9万条数据,tbl2有3万条数据
select tbl1.id from table1 tbl1 where not exists (select 1 from table2 tbl2 where tbl1.id = tbl2.id); 参考技术C 使用not exists 代替 not in 参考技术D 那就用 not exists 第5个回答 推荐于2017-11-25 两种方案:
1、分别给两表的id加索引(效果显著)
2、不用子查询
select tbl1.id from table1 tbl1 left join tbl2 on tbl1.id=tbl2.id
where tbl2.id is null本回答被提问者和网友采纳
SQL优化- in和not in
in不会导致索引失效,但最终数据库会将in语句解析为or语句,eg:
select * from T_MAIN_PROCESS t where t.audit_status_code in (‘05‘,‘07‘)。 查看执行计划会被解析成:
select * from T_MAIN_PROCESS t where t.audit_status_code=‘05‘ or t.audit_status_code=‘07‘
所以:可用or代替in,减少数据库解析in语句时间。
not in 会导致索引失效。所以
以上是关于求优化一句sql语句,not in速度太慢了的主要内容,如果未能解决你的问题,请参考以下文章
sql语句多表联查,查询速度太慢,超过10s,由于是菜鸟,不知道怎样优化