日期:2014-05-18 浏览次数:20646 次
--try select 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 的开销