mssql sqlserver 创建带条件的唯一约束索引


摘要:
下文讲述只对部分符合条件的数据加入相应的索引信息,如下所示:
实验环境:sqlserver 2008 R2



1.带条件的索引创建方法

例:创建带条件的复合索引(keyIdA,keyIdB,keyIdC)
当keyIdA 不等于空字符时候,需保证 keyIdA,keyIdB,keyIdC三个字段组成复合唯一索引,
keyIdA为空时,不做任何限制,如下所示:

 IF EXISTS(SELECT object_name(object_id) tableName,name,type_desc  from  sys.indexes  
where  name=  'un_IndexTest' )
 alter table tableName  
 drop constraint un_IndexTest
 GO 
----创建带条件的索引 
 create unique nonclustered index un_IndexTest  on  table1(keyIdA,keyIdB,keyIdC)  where  isnull(keyIdA,'')<> ''
go


2.创建可带多个空值的唯一索引

例:创建一个不验证null类型的唯一索引:

 create unique nonclustered index un_IndexTest  on  table1(keyIdA)  where  keyIdA is not null 
go