Adaptive Server Anywhere (SQL Anywhere) 8 のメッセージ “重複したインデックス” の理解

本書では、Adaptive Server Anywhere (SQL Anywhere) 8 のメッセージ “テーブル <table name> に重複したインデックス <index name> があります” について説明します。

質問

Adaptive Server Anywhere (SQL Anywhere) バージョン 8 のデータベース・サーバでデータベースを起動すると、サーバ・メッセージ・ウィンドウにメッセージ “テーブル <table name> に重複したインデックス <index name> があります” が表示されます。この警告はなにを表しているのでしょうか?

回答

このメッセージはデータベースの破損を示しているものではありません。これは冗長インデックスがあることを表しています。このような警告が発生するのは以下の場合です。

・セカンダリ・インデックスが、プライマリまたは外部キーと同じカラム (および順序) に定義されている
・セカンダリ・インデックスが、ほかのセカンダリ・インデックスと全く同じように定義されている
・プライマリ・キーに加え、テーブルで同じカラムに UNIQUE 制約が定義されている

このような余分なインデックスの影響は、挿入、更新、削除のパフォーマンスが遅くなることです。そのため、メンテナンスが必要ですが、データベース自体には問題はありません。重複しているインデックスを取り除くだけで、警告は発生しなくなります。警告の原因により、セカンダリ・インデックス (セカンダリ・インデックスがプライマリ・キーまたは外部キーと同じ場合) かプライマリ・キー・カラムの UNIQUE 制約を削除します。