mnbn.net
当前位置:首页 >> SQL语句not in如何优化最好 >>

SQL语句not in如何优化最好

两种方案: 1、分别给两表的id加索引(效果显著) 2、不用子查询 select tbl1.id from table1 tbl1 left join tbl2 on tbl1.id=tbl2.id where tbl2.id is null

not exist 例如 select * from a where a.id not in (select id from b) 优化为 select * from a where a.id not exists (select id from b)

把*换成具体你想要的字段,不需要的就别写了,以免扫描全表视图 如果回收入库单_主表比较大,那需要给此表建个索引,索引列就是单据类型

首先说明,in的效率就不高,not的效率更底,所以二者结合就效率不高了。 至于为什么,从大了说,in和not都跟索引没有关系,而且就算相关字段有索引二者也都不会走,走的都是全表查询,那么这肯定不会快。 再说语句本身,not in 首先要判断是不是...

可以考虑换成not exists或minus(except) --not existsSELECT name FROM test1 aWHERE NOT EXISTS (SELECT 1 FROM test2 b WHERE a.NAME=b.NAME and b.NAME'admin')--minusSELECT name FROM test1 aminusSELECT DISTINCT NAME FROM test2 WHERE N...

假设原来的句子是 select * from t1 where t1.f1 in (select t2.f2 from t2 where t2.f2=xxx) 和你的很类似 你用子查询 很慢 我们现在修改为: select t1.* from t1 ,t2 where t1.f1 = t2.f2 and t2.f2=xxxx 这里使用了关联查询代替了子查询大大...

建一个表id_list,专门放这些个id,然后建个索引 select a.orderno from tbltest a,id_list b where a.id=b.id

delete from acct_item a where not exists (select 1 from subs b where a.subs_id=b.subs_id )

我重写一下你的语句你应该就明白了 select count(*) from customer_info as c where c.custcd not in ( select c.custcd from grade_model_info where '10000'=c.custcd ) sqlserver是支持这样的写法的,如果是外部表的条件尽量写在外部 而且内...

NOT IN语句 在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写S...

网站首页 | 网站地图
All rights reserved Powered by www.mnbn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com