TECHNOLOGY
FAQ (よくある質問)
対象バージョン : 9.0.x
対象OS : 全て
QUESTION ( SQ0801073 )
サーバのメッセージウインドウに「パフォーマンス警告 : データベース “(DB名)” では、テーブル “(テーブル名)” のオートインクリメント・カラム “(カラム名)” にインデックスが設定されていません。」という警告が表示されますが、これは何ですか?
ANSWER
・警告の原因
オートインクリメント・カラムは、システムテーブル上に、そのカラムの最大値を保持しており、次の値を自動的に決定しております。
しかし、Load Table 文などによりデータのインポートを行った直後は、現在のテーブルのローをもとに、新たにオートインクリメント・カラムで使用する次の値(カラムの最大値)を決定する必要が発生致します。
この際、対象となるオートインクリメント・カラムにインデックスが存在しておりませんと、テーブルスキャンによりカラムの最大値を検索することになり、パフォーマンスの低下が発生する可能性がある為、この警告メッセージが表示されます。
・警告の解決策
オートインクリメント・カラムが複合キーの一部である場合、可能であればテーブルのレイアウトを変更し、対象のカラムをキーの先頭カラムとするか、対象のカラムを新たなインデックスとして定義することにより、そのカラムをインデックス・スキャン可能にすることで、上記の警告は表示されなくなります。
ただし、テーブル・レイアウトの変更や、インデックスの追加を行った場合、別の処理でのパフォーマンスの低下が発生する可能性もございますので、特にパフォーマンスの問題が発生していないようであれば、上記の対策を行わず、この警告を無視するということも一つの選択肢となります。
なお、実際にはローの INSERT 時にオートインクリメントを設定したカラムへ値を指定しており、オートインクリメント・カラムとして使用されていない場合には、オートインクリメント・カラム・デフォルトの定義をやめることも有効な解決策となります。