可空列的唯一索引

时间:2013-02-18 03:10:15

标签: sql sql-server

我有一张包含许多记录的表格。列X可以为空,此列中有很多记录为NULL。我可以在此列上创建UNIQUE非聚集索引吗?那些空值是不是违反了唯一约束?

1 个答案:

答案 0 :(得分:6)

如果您没有SQL Server 2008 或更新 - 您可以设置过滤的唯一索引来排除/忽略所有NULL值。

CREATE UNIQUE NONCLUSTERED INDEX uixYourIndexName
ON dbo.YourTableName(YourColumnName)
WHERE YourColumnName IS NOT NULL

这基本上会“过滤掉”所有NULL值 - 根本不包括它们到索引中。任何使用相同WHERE子句的查询都可以使用此筛选索引来查找这些行。

如果没有过滤索引,您可以在列上创建UNIQUE INDEX,因为使用UNIQUE索引时,您只能拥有一行NULL的行列。