使用Filtered Indexes提高查询性能
通常我们会遇到这样的情况,一张表中包含上百万条的数据,但是每次我们只查询一小部分的数据。
比如一列只有少部分NULL值,每次我们都需要将Null值找出来进行处理。或者我们有状态标志位,需要取Flag对数据处理。 由于数据大部分是重复的,所以对于整个列做索引代价是非常大的,而且对查询性能提升可能不大。
庆幸的是微软提供了Filtered index。Filtered index引使用筛选谓词对表中的部分行进行索引,
但是如果想查询Flag为N的,仍然是Table Scan:
当然我们可能还需要查询其他的字段,创建索引的时候还可以配合Include使用。
使用Filtered index还有一些限制,更多信息可以参考MSDN:http://technet.microsoft.com/en-us/library/cc280372.aspx