我有一张有很多记录的表。X 列可以为空,并且很多记录在该列中有 NULL。我可以在此列上创建唯一的非聚集索引吗?那些空值不是违反唯一约束吗?
问问题
4884 次
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 回答