这个语句要2秒多
select  t1.isncode ,
t2.pinbancode ,
t1.outercode
from tblisnstatus t1 left join tblmoserialno t2 
on t1.isncode=t2.moserialno  where t1.isncode='021JHRHVH4000623'同样一个语句,只是把查询的一个字段去掉,就只要0.0几秒。怎么优化上面的语句??
select  t1.isncode ,
--t2.pinbancode ,
t1.outercode
from tblisnstatus t1 left join tblmoserialno t2 
on t1.isncode=t2.moserialno  where t1.isncode='021JHRHVH4000623'

解决方案 »

  1.   

    看看执行计划呢,有啥区别,试试
    select  /*+RULE*/t1.isncode ,
    t2.pinbancode ,
    t1.outercode
    from tblisnstatus t1 left join tblmoserialno t2 
    on t1.isncode=t2.moserialno  where t1.isncode='021JHRHVH4000623'
      

  2.   

    第一句是从两个表中取数据,第二句注释了表2的字段,相当于从一个表中取数据,执行效率变快是必然的。
    楼主要想从两张表中取数据的话,这样写是没有问题的,我觉得在sql语句上面没有优化的余地了。
      

  3.   

    楼主也可以试试把数据量小的表放在left join后面作为基础表,这样执行效率也会好一点。
      

  4.   

    我很纳闷儿,你既然left join 了,后面还用where 进行过滤,那直接inner join 不就完了。