如何提高此查询的性能

时间:2017-08-24 13:41:52

标签: sql

从dbo.tble中选择* 从dbo.tble

中选择*

1 个答案:

答案 0 :(得分:2)

下面几点想法

  1. 删除尽可能多的左连接。尽可能使用内连接。

  2. 删除子查询以获取ISerialNumber。稍后在包装器查询中获取。

  3. 如果尚未存在,则在WHERE子句中的列上创建索引。

  4. 请勿使用这种日期比较方式。想象一下结果集中每一行的这种转换。

    CONVERT(VARCHAR(8), a.CreationDate, 112) BETWEEN (' + (@StartDate) +
    ') AND (' + (@EndDate) + ')
    
  5. 相反,将您的@startDate@EndDate变量转换为日期时间并与a.CreationDate进行比较

    1. 在将此查询运行到另一个表变量之前计算这些。 在查询中使用这些变量。

      (SELECT ParamValue FROM LMG.dbo.MultiValue(''' + @JurisdictionId + ''','','',1))
      
      SELECT ParamValue FROM LMG.dbo.MultiValue(''' + @StateOfConvictionId + ''','','',1)
      
    2. 在SQL Server Management Studio中检查实际执行查询计划。需要花费更多成本(百分比)的步骤。