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

Nic*_*aro 2 sql sql-server indexing sql-server-2005

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

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

  • WHERE(长<> 0或短<> 0)
  • WHERE(长<> 0且短<> 0)

我正在考虑在条件WHERE <> 0的情况下将索引放在长和短(或两者都有一个索引)上,希望存储过程能够使用索引扫描而不是表扫描来获取此数据.

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

And*_*rew 6

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

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

避免小费的唯一方法是使索引覆盖,但我们无法看到子句/选择的其余部分以了解这是否是合理的选择.