使此查询更有效率,运行时间超过15分钟

时间:2011-04-06 15:16:37

标签: sql

Use ANALYTICS

Go

SELECT NWPFFS AS HUB,
       LCRGN AS REG,
       LCDST AS DIST,
       ILLCN AS LOC,
       LCNAM AS [LOC NAME],
       LXLTYP AS LOCTYPE, 
       IXPBSN AS B, 
       IXPGRP AS G, 
       IXPDPT AS D,
       ITITMN AS ITEM,
       ITMFGN AS MFG#,
       ITDSC1 AS DESC1,
       ITDSC2 AS DESC2, 
       ITINVM AS [STK CD], 
       ITVND AS VEND#,
       ITHGT AS VENDOR,
       ILOHNQ AS [ON HAND],
       ILCMTP AS COMPURCH,
       ILCMTC AS COMSALE,
       ILYSLQ AS [SLS YTD QTY],
       ILLYSQ AS [SLS LY QTY], 
       ILINVV AS [INV VAL]
  FROM (dbo.Item_Location_Master 
 INNER JOIN dbo.Item_Master 
    ON ILITMN=ITITMN)
 INNER JOIN dbo.Location_Master 
    ON ILLCN = LCLCN
 WHERE ((LXLTYP='R') OR (LXLTYP='T'))
   AND ((ITBOMT <> 'T') AND (ITBOMT <> 'S')) 
   AND ((ILOHNQ<>0) OR (ILCMTP<>0)) 
   AND (IXPBSN <> 9) 
   AND ((ILITMN<>21542) OR (ILITMN<>21750))
   AND (NWPFFS<>9900)

4 个答案:

答案 0 :(得分:1)

您可以做的最好的事情是在LXLTYP和其他一些字段上提供索引。 如何为我们提供更多信息,如表格的当前索引等?那些列名真的令人困惑。

这是一篇关于SQLTeam.com索引的好文章:http://www.sqlteam.com/article/sql-server-indexes-the-basics

答案 1 :(得分:0)

检查你的表索引,如果你没有任何索引,现在是了解它们的好时机。

答案 2 :(得分:0)

我能提供的唯一建议是确保您需要索引,并可能考虑创建两个表的持久非规范化版本。

您可以在SQL Server中使用索引视图或使用所需数据加载的表来执行此操作。

如果您提供更多信息(执行计划将是一个好的起点),我们可以提供更详细的帮助。

答案 3 :(得分:0)

如果没有在表格上看到查询计划或索引,我就无法进行任何具体的诊断。但是,这里有一些建议:

  • 检查查询计划以查看正在花费时间的操作。如果计划错了,可能会有99%的时间进行一次操作。

  • 将OR转换为s-argable子句。看看这是否会改变查询计划。

  • 将索引放在联接中使用的列上。看看这是否会改变查询计划。

  • 检查表格的统计信息是否是最新的。虽然这不应该在SQL Server上真正发生,但如果统计信息过时,则优化器可以选择次优计划。