クエリを実行するとき、SQL Anywhere は各テーブルへのアクセス方法を選択します。インデックスは、アクセスを高速化します。データベース・サーバが適切なインデックスを見つけられないときは、テーブルを順にスキャンしなければならず、時間を要します。
たとえば、大規模なデータベースから複数の従業員を検索する必要があるのに、姓か名前のどちらかしかわからないとします。インデックスがない場合、SQL Anywhere はテーブル全体をスキャンします。しかし、姓が先に入力されているインデックスと名前が先に入力されているインデックスの 2 つのインデックスが作成されていれば、SQL Anywhere はこの 2 つのインデックスを先にスキャンするので、たいていはより速く情報を返すことができます。
インデックスを適切に選択すると、パフォーマンスに大きな違いが生じます。インデックスの作成と管理の詳細については、インデックスの操作を参照してください。
SQL Anywhere では、インデックスによって非常に効率よく情報を検索できますが、インデックスを追加するときは注意してください。各インデックスは、ローの挿入、削除、更新時に余分な作業を生みます。SQL Anywhere は影響を受けるインデックスもすべて更新するからです。
このため、SQL Anywhere がデータにより効率的にアクセスできるときにかぎってインデックスを追加するようにしてください。特に、大きなテーブルに連続して不必要なアクセスを行うような処理をなくすときに実施します。ただし、テーブルにローを追加するときのパフォーマンスを向上する必要があり、情報を迅速に検索する必要がない場合は、できるだけ少ないインデックスを使用します。
データベースに有効なインデックスを選択する手助けをするインデックス・コンサルタントを使用することも 1 つの手段です。インデックス・コンサルタントを参照してください。
クラスタード・インデックスを使用すると、テーブル内のローをインデックス内の順序とほぼ同じ順序で格納できます。インデックスとクラスタード・インデックスの使用を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |