SQL Server:SQL需要很长时间才能执行

时间:2016-01-05 04:38:38

标签: sql-server

我有一个sql查询,需要很长时间才能执行,下面是sql的详细信息。

Bifunctor

我可以做些什么来优化此查询,即提高其性能?

sql结果如下:

enter image description here

2 个答案:

答案 0 :(得分:0)

将tDate和SiteId的过滤器添加到生成数据的select查询中(...来自rawData,其中x和y之间的tDate和SiteId In(a,b,c)...将改善它

答案 1 :(得分:0)

从您的查询中可以看出,基表即Raw_Data包含大量记录。如果确实如此,那么您可以尝试下面提到的步骤来优化您的方案。

  1. 您需要确保表tDate的{​​{1}}列上有索引,此外此索引还包含Raw_Data列(最后提到的示例查询)这个答案)
  2. SiteID, tTime, tMI
  3. 上创建索引
  4. SiteID上的过滤器移至主查询
  5. 使用主查询中的过滤器进行查询

    tDate

    创建包含列的索引

        select *
        from 
        (   select SiteID, tDate, tTime,
              (CASE WHEN IsNumeric(tMI)=1 then cast(tMI   as float) 
                  ELSE null END) AS value
              from Raw_Data 
              where 
             (tDate>='20151201' and tDate<='20151205') 
          ) src
         pivot
         (
           max(value) for SiteID in ([CA0021], [CA0022], [CA0059])
          ) piv    
        order by tDate
    

    另一种方法

    此外,您可以采取的另一种方法是在create NONCLUSTERED index index1 on Raw_Data ( tDate ASC ) include ( SiteID, tTime, tMI ) 中运行查询,并为SQL Server Management Studio选中查询选项。

    如果执行计划有建议创建索引(这通常以绿色字体显示),那么您应该创建推荐索引并查看是否有助于提高查询速度。我从我的经验中观察到,执行计划建议始终有效并且会带来很大的改进。