系统WINDOWS 2003 在SQL2000中in 和 not in联用没任何问题,但到了2005中出现了查询异常缓慢的问题,
原先查询时2分钟,但现在查询时2个小时
SELECT u1.FSupplyID,sum(v1.FConsignAmount) from  ICStockBill u1 inner join ICStockBillEntry v1 
on u1.FInterID=v1.FInterID 
where u1.fsupplyid in (select fitemid from #custid)
and u1.fbillno not in (select bno21 from #hooked where fdate<'2010-03-01')
group by u1.FSupplyID求高手帮忙

解决方案 »

  1.   

    应该是没有建立索引的关系吧!  在字段fitemid和bno21 等上面建立索引试试。
      

  2.   

    in和not in会影响查询速度很大的,尽量少用in可以用inner join 代替
    not in可以用不等式 代替
      

  3.   

    应该是in 和not in 产生了卡尔值,
      

  4.   

    请首先查看in或者not in中的数据量有多大,如果数据量比较大的话,很影响效率,提供优化的思路:
    1.where u1.fsupplyid in (select fitemid from #custid)为不相关的子查询,不会过滤会先查询出来#custid中所有的fitemid,可以用join...on
    或者exists
    2.not in可以修改为not exists
    3.2000和2005的server的配置是否一样呢.