我只是在了解 MS SQL 2008 中的新过滤索引,我正试图了解它们会在哪些方面造成伤害以及在哪些方面有所帮助。
我可以看到,向员工表添加过滤索引以仅索引当前员工是个好主意。
但是如何根据时间将几个过滤索引应用到一个大表呢?例如,假设我有一个包含 enteredOn 日期/时间字段的表,并且该表包含多年的数据。如果查询通常是基于日期和其他一些字段(例如 enterby)完成的,那么使用一些具有 where 子句将索引限制为时间跨度的过滤索引是否会很好?在我的示例中,查询类似于
select enteredOn, Description, ...
from myTable
where enteredOn > '2011/01/01' and enteredBy = "My, User"
每年都有一个过滤索引是否合理,或者当查询以下内容时会导致很多问题?
select enteredOn, Description, ...
from myTable
where enteredOn > '2009/06/01' and eneteredOn < '2010/06/01' and enteredBy = "My, User"
关闭,
这取决于几个因素,没有针对每种情况的唯一答案。例如,您可能希望将一些旧数据分区并存档到一组专用磁盘上,因为它们很少被访问。我怀疑您会考虑将这样的分区交换为过滤索引。我怀疑您想为特定列中的所有 NULL 值创建一个分区,而不是使用过滤索引。
您应该在http://msdn.microsoft.com/en-us/library/ms345146%28v=sql.90%29.aspx阅读 Kimberley Tripp 撰写的分区白皮书,以及在http:// technet.microsoft.com/en-us/library/cc280372.aspx。
就您需要考虑的所有设计注意事项而言,这两个链接应该可以帮助您指明正确的方向。