0

多くのレコードを持つテーブルがあります。列 X は NULL 可能で、多くのレコードがこの列に NULL を持っています。この列に UNIQUE 非クラスター化インデックスを作成できますか? これらの 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 を作成できませんNULLでした。UNIQUE インデックスを使用すると、その列に含まれる行が 1 つしか許可されないためです。

于 2013-02-18T05:44:21.193 に答える