SQL Server 2008筛选索引

问题描述:

我想了解SQL Server 2008筛选索引功能。SQL Server 2008筛选索引

数据库引擎如何处理这个概念?在查询大型表格时,它如何帮助我获得比标准索引更快的结果?

有人能帮助我吗?

谢谢。

它是您的索引中的WHERE子句。

我一百万行的表现实生活中的计划:

  • 我需要在一个表中的列的索引,但90%的数值是NULL。我需要非空的10%的索引,但索引是臃肿与90%NULL。所以我添加过滤器并节省空间。

  • 我想独一无二的同一列(eq唯一的非空值)。在SQL Server 2008之前,我必须使用索引视图或代码。现在,“WHERE”允许我通过索引执行唯一的操作

我发现概念化过滤索引的最简单方法是对其有约束的索引,它只允许某些值进入索引。

如果您的查询要求所有属于约束条件的值,那么引擎知道它可以使用筛选索引,而不是恢复到另一个索引/基础表。如果您询问约束之外的值,则不会使用已过滤的索引。

就其如何使您的系统更快速而言,索引可能非常有针对性,并且在相同的值上占用的页面总数要少于等效的NC索引。这基本上可以减少I/O并提高速度。即使索引正在搜索已过滤索引,您也更有可能为索引获取页面缓存命中,因为由于约束条件,已过滤索引仅包含您感兴趣的(理论上)行。

如果您的数据分布和查询没有遵循定义的使用模式,那么使这些使用模式更难以使用,但是在您有许多您从不感兴趣的空值的情况下,则过滤后的索引可以是例如设置为仅包含非空值。