16

比較的大きなテーブル(81M行)とそのインデックスがあります。

既存のインデックスに列を追加したい。

Googleで検索しましたが、方法が見つかりませんでした。

インデックスに列を追加する唯一の方法は、それを削除して再作成することであるとどこかで読んだことがあります。

ただし、ここでは、既存のインデックスに列を追加するのが一般的な方法であると述べています。(作者はそれをお勧めしませんが。)

それで、既存のインデックスに列を追加することは可能ですか?可能であればそれは良い習慣ですか?

4

1 に答える 1

19

インデックスを削除して再作成せずに、既存のインデックスに新しい列を追加することはできません。

Jonathan Lewisが「既存のインデックスに列を追加する」ことについて話しているとき、彼は既存のインデックスを削除して新しいインデックスを作成することについて話している。彼の例では、「元のインデックス」と「変更されたインデックス」の両方がCREATE INDEXステートメントとともにリストされていることに注意してください。ALTER INDEXこの例には、古い列を削除せずに新しい列を追加するステートメントはありません。

追加の列を使用してインデックスを削除して再作成することをお勧めするかどうかは、いくつかの要因によって異なります。Jonathan Lewisが指摘しているように、列を追加するとインデックスのクラスタリングファクターに影響を与え、既存のクエリのパフォーマンスが低下するさまざまな状況があります。あなたのシステムや私たちが話しているインデックスについて何も知らなければ、アドバイスすることは不可能です。

于 2011-12-04T21:26:55.123 に答える