この質問は、挿入が行われたときにクラスター化インデックス内のデータの再編成で何が起こるかに関するものです。クラスター化インデックス内のデータを再編成するには、ディスク上のデータの物理レイアウトを変更する必要があるため、クラスター化インデックスを使用しないテーブルよりも、クラスター化インデックスを使用するテーブルで挿入を行う方がコストがかかると思います。仕事で出くわした例を除いて、私の質問をどのように表現すればよいかわかりません。
テーブル (ジャンク) があり、テーブルに対して実行される 2 つのクエリがあるとします。最初のクエリは名前で検索し、2 番目のクエリは名前と何かで検索します。データベースで作業していると、次のように、各クエリをサポートするために 1 つずつ、2 つのインデックスでテーブルが作成されていることがわかりました。
--drop table Junk1
CREATE TABLE Junk1
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name ON Junk1
(
Name
)
CREATE NONCLUSTERED INDEX IX_Name_Something ON Junk1
(
Name, Something
)
2 つのインデックスを調べたところ、IX_Name_Something は名前で検索する任意のクエリで使用できるため、IX_Name は冗長であるように見えます。したがって、IX_Name を削除し、代わりに IX_Name_Something をクラスター化インデックスにします。
--drop table Junk2
CREATE TABLE Junk2
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name_Something ON Junk2
(
Name, Something
)
より効率的な挿入/削除が行われるため、最初のインデックス作成スキームを維持する必要があると誰かが提案しました (名前と何かの更新について心配する必要はないと仮定します)。それは理にかなっていますか?維持する必要があるインデックスが 1 つ少ないことを意味するため、2 番目のインデックス作成方法の方が優れていると思います。
この特定の例についての洞察や、クラスター化インデックスのメンテナンスに関する詳細情報を教えていただければ幸いです。