筛选索引简单使用
对于在强制实施数据完整性时的一种常见需求,也可以用筛选索引来解决。出于强制唯一性的目的,SQL Server支持的UNIQUE约束认为两个NULL是相等的,这意味着,如果在一个允许为NULL的列上定义了一个UNIQUE约束,那么这个列上就只能有一行可以为NULL。但在一些情况下,可能只需要对非NULL值强制实施唯一性约束,允许存在多个NULL值。ANSI SQL确实支持这种UNIQUE约束,但SQL SERVER还从未实施过这种约束。现在,有了筛选索引,这种需求解决起来也不难。只要创建一个唯一的筛选索引,将其筛选谓词定义为WHERE<列>IS NOT NULL。例如,运行以下代码,创建一个T1表,并在它的COLL列 定义一个这样的筛选索引:
-- CleanupDROP INDEX Sales.SalesOrderHeader.idx_currate_notnull;