2017-10-06 12 views
0

私は3つのカラムを持つテーブル[GROUPMEMBERS]を持っている:私は分割SSISパッケージがSQL Server:「クラスタ化された」行を常に読んでいると、クラスタ化された一意でないインデックスがパフォーマンスを向上できますか?

<dn>,<objectGUID>,<member|member|member|member|member> 

[dn] NVARCHAR(255) 
[objectGUID] NVARCHAR(38) 
[member] NVARCHAR(255) 

データのソースは、値がそのような同様に格納されるテーブルであります[member]の区切り値のそれぞれを指定し、各メンバに新しい行を書き込みますが、同じ[dn]と[objectGUID]を保持します。

したがって、各[dn]:[objectGUID]ペアのメンバーを含むすべての行は、常に順番に書き込まれます。テーブルはロードされるたびに切り捨てられます。

[dn]と[objectGUID]は、同じソースオブジェクトを表す異なる一意の値です。 2つの異なるアプリケーションがそれぞれ[メンバー]を照会するために1つを使用するため、私はそれらを両方持っています。さらに、[dn] OR [objectGUID]に対するクエリは、常に関連する[メンバ]をすべて返します。

[メンバ]が(ほぼ)常に一緒に返されるため、[dn]または[objectGUID]のいずれかにクラスタ化インデックスを作成するのは意味がありますか?

私の前提は、行が一緒に書き込まれ、同じ値でクラスター化され、一緒に読み取られる場合、クラスター化されていない索引よりもパフォーマンスが良いということです。

+0

クラスタ化された非一意のインデックスは、一意性を持つクラスタ化インデックスのように動作します.SQLは、[一意化するために[一意性]を追加します(https://stackoverflow.com/questions/4332982/do-clustered-indexes-have-to-be-unique ) – TheGameiswar

+0

質問の次の部分は少なくとも私には明らかではありません – TheGameiswar

答えて

0

私にはCIをdn、objectGUIDに置くのが理にかなっています。

関連する問題