9

単一の行を更新する必要がある巨大なテーブルがあります。行の主キーはわかりませんが、そのテーブル内で一意のvarchar値があります。そのテーブルには、他のいくつかの列の値もあります。

アップデートの実行には3分以上かかり、テーブル全体のスキャンを実行していると思います。

テーブルのインデックスを見ると、列のインデックスのカーディナリティはゼロで、ページ数はゼロです。テーブルの行数(数百万)に等しいカーディナリティーと数十万のページ数を持つ他のインデックスがあります。

これらの数字は実際にはどういう意味ですか?

また、フォローアップとして、カーディナリティまたはページ数が高いインデックスにヒットする制限を追加すると、実行が高速化されますか?または、変更する行をすばやく見つけるのに適したものを見つけるために、インデックスを調べることができるものは他にありますか。

4

1 に答える 1

7

カーディナリティは、テーブル内のそのフィールドの一意の値の数です。

レコードがないため、SQL Server が実際にインデックスを作成しなかったと思われます。このフィールドがすべてNULLs である可能性はありWHERE 1=0ますか?

開始するのに適した場所は、更新を実行して実際の実行計画を取得することです。

編集:

インデックス タイプ 3 はXML Index.

こちらのページを参考にしてください。

インデックスの構造XMLはかなり異なります。私はそれらを自分で使用していませんが、簡単に読むと、ユーザーが直接アクセスすることはできませんが、クエリエンジンによって使用される一連の追加のインデックスが作成されるように思えます。

于 2011-06-30T15:31:40.913 に答える