使用where子句创建索引 - SQL SVR 2005

时间:2010-03-26 13:53:20

标签: sql sql-server sql-server-2005 indexing

我最近发现能够在SQL Server 2005中的索引中使用WHERE子句。我想优化一些查询,并希望得到一些反馈。

感兴趣的表包含2个浮点列,[long]和[short]。这些列在20-40%的行中可以是0。有几个存储过程使用以下子句之一查询此表:

  • WHERE(长<> 0或短<> 0)
  • WHERE(长<> 0&short<> 0)

我正在考虑将条件设置为长和短(或两者都有一个索引)条件WHERE<> 0希望存储过程能够使用索引扫描而不是表扫描来获取这些数据。

鉴于上述信息,您将如何创建索引?或者,如果指数不是最佳解决方案,那么什么是合理的替代方案?提前谢谢。

1 个答案:

答案 0 :(得分:6)

在索引创建中使用Where子句是SQL Server 2008的一项功能 - 筛选的索引不在SQL Server 2005中。

过滤的索引遵循与正常NC,非覆盖索引相同的小费规则,因此60-80%的行是<>。 0,可能是索引将提示表/聚簇索引扫描。

避免这种小费的唯一方法是使索引覆盖,但我们看不到其余的条款/选择,以了解这是否是一个合理的选择。