首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

帮忙优化一下,执行速度很慢,多谢

2012-06-12 
帮忙优化一下,执行速度很慢,谢谢!select TA001,TA002,TA006,TA034 from MOCTA whereTA001+TA002 not in (s

帮忙优化一下,执行速度很慢,谢谢!
select TA001,TA002,TA006,TA034 from MOCTA where TA001+TA002 not in (select TA001+TA002 from SFCTA) 
AND TA011 ='1' or TA011='2' or TA011='3' 
ORDER BY TA006,TA001,TA002 ASC

[解决办法]

SQL code
--tryselect TA001,TA002,TA006,TA034 from MOCTA where not exists (select 1 from SFCTA s where MOCTA .TA001=s.TA001 and MOCTA .TA002=s.TA002 )AND TA011 ='1' or TA011='2' or TA011='3'  ORDER BY TA006,TA001,TA002 ASC
[解决办法]
not in 或者not exists会导致全表扫描。,建议不要放到where的前面,因为where子句是从左到右顺序执行的,应该考虑索引的顺序,然后where子句中严格按照索引顺序来写,如果没有索引,那么要考虑放在前面的字段筛选能否快速地减少数据量。另外,对于一些分布零散的列,比如type,最好不要放到前面。order by 的时候,如果实在需要这样order by ,那么可以考虑聚集索引是否有必要按这个排序方式来创建,以减少查询中order by 的开销

热点排行
Bad Request.