インデックスの作成が必要かどうかは、単純な計算式では判断できません。インデックス検索の利点と、そのインデックスの管理に伴うオーバヘッドのトレードオフを考慮してください。次の要素を考慮して、インデックスの作成が必要かどうかを判断できます。
キーとユニークなカラム SQL Anywhere は、プライマリ・キー、外部キー、ユニークなカラムのインデックスを自動的に作成します。これらのカラムについては、インデックスを追加して作成しないでください。ただし、複合キーの場合は、追加インデックスで強化できることがあります。
詳細については、複合インデックスを参照してください。
検索頻度 特定のカラムが頻繁に検索される場合は、そのカラムのインデックスを作成するとパフォーマンスを向上できます。検索頻度の低いカラムにインデックスを作成しても意味がありません。
テーブルのサイズ 多数のローを持つ比較的大きなテーブルのインデックスを作成すると、比較的小さなテーブルのインデックスの場合よりも多くの利点が得られます。たとえば、ローが 20 しかないテーブルの場合、逐次スキャンにはインデックス・ルックアップと同程度の時間しかかからないため、インデックスを作成しても利点は得られません。
更新回数 インデックスは、テーブルに対してローが挿入または削除されたり、インデックス・カラムが更新されたりするたびに、更新されます。カラムにインデックスがあると、挿入、更新、削除のパフォーマンスが低下します。更新頻度の高いデータベースのインデックスは、読み込み専用データベースの場合より少なくなるようにしてください。
領域の注意事項 インデックスはデータベース内の領域を占有します。データベース・サイズが重要な場合は、インデックスの作成を控えてください。
データ分散 インデックス・ルックアップから返される値が多すぎると、逐次スキャンよりも高コストになります。SQL Anywhere は、この条件を認識するとインデックスを使用しません。たとえば、SQL Anywhere サンプル・データベース内の Employees.Sex のように、値が 2 つしかないカラムについては、インデックスを使用しません。このため、重複を排除した (distinct) 値が少数しかないカラムのインデックスは作成しないでください。
インデックス・コンサルタントは、使用中のデータベースに最適なインデックス・セットを選択する手助けをするツールです。インデックス・コンサルタントを参照してください。
インデックスは、ローカルとグローバルのテンポラリ・テーブル上で作成できます。テンポラリ・テーブルが大きく、ソートされた順序またはジョインで数回アクセスされることが予想される場合は、インデックスを作成します。そのような予想がない状況では、クエリを処理するパフォーマンスの改善よりも、インデックスを作成し削除するコストの方が上回ってしまいます。
詳細については、インデックスの操作を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |