同语句不同条件 有的就很快,1秒
有的就超时select b.NDT图纸号,b.焊口号,UT.rpt_id as [ID_Report UT],UT.rpt_ReportNo as [UT NO] from vWeldBaseCh b
                        left outer join 
                ( select rpt_SumType
                    ,rpt_ID
                    ,rpt_ReportNo
                    ,item_ID_WeldBase
                from vReportItems
                where rpt_ID_Project in(5584) and rpt_SumType='UT' 
                group by  rpt_SumType
                                        ,rpt_ReportNo
                                        ,rpt_id
                                        ,item_ID_WeldBase
                ) as UT
                on UT.item_ID_WeldBase = b.id 
                        where ID_Project  in (5584)
                        order by b.NDT图纸号,b.焊口号
这会是什么原因呢?

解决方案 »

  1.   

    有的条件,走索引了,就会比较快。 有的条件没走索引,就扫描表,所以慢。 LZ Ctrl + L 看一下执行计划的不同就知道了。 
      

  2.   

    如果把 b 表的 ID_Project  in (5584)
    去掉,那么8万的数据只要1秒。如果把 b 表的 ID_Project  in (5584)
    5584改成其他,也只要两三秒而已ID_Project  加了非聚集索引
      

  3.   

    问题出在:
    where ID_Project  in (5584)
    请把a表条件先执行完成了。慢在了你的a表返回数据过多,然后left join时候计算量太大。时快时慢是和你的系统当时状态有关。减少运算量自然就快了。