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