select sum(totalmoney) from rfiduser.pikerecord a
where exists(select 1 from rfiduser.vehiclelogout where vehiclenumber=a.vehiclenumber and enterpriseid='dw03' )
   or exists(select 1 from rfiduser.vehicleregister where vehiclenumber=a.vehiclenumber and enterpriseid='dw03')所执行的语句太慢。能有什么可优化的语句吗

解决方案 »

  1.   

    你pikerecord表的数据有多少?vehiclelogout数据有多少?vehicleregister数据有多少?
      

  2.   

    pikerecord 40万条 每天2000条的增加
    vehiclelogout  100条,每天增长1条
    vehiclelogout  2000条,每天10条的增长
     
      

  3.   

    select sum(totalmoney) 
    from rfiduser.pikerecord a
    where exists (select 1 from 
                    (select b.vehiclenumber from rfiduser.vehiclelogou b where b.enterpriseid='dw03' union all
                     select c.vehiclenumber from rfiduser.vehicleregister c where c.enterpriseid='dw03'
                    ) d
                  where d.vehiclenumber = a.vehiclenumber
                 );
    试试看吧,尽量不用or