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