0

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

4

1 回答 1

9

如果您不是 SQL Server 2008或更高版本 - 您可以设置过滤的唯一索引以排除/忽略所有NULL值。

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

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

如果没有过滤索引,则无法在列上创建 UNIQUE INDEX,因为使用 UNIQUE 索引,您只能NULL在该列中拥有一行。

于 2013-02-18T05:44:21.193 回答