SQL Anywhere データベース・サーバで ORDER BY 句を使用してクエリを実行するときに、複数の方法が考えられる場合があります。インデックスを使用すると、データベース・サーバがより効率的にテーブルを検索できるようになります。
複数の実行方法があるクエリの一例は、WHERE 句と ORDER BY 句の両方を含むクエリです。
SELECT * FROM Customers WHERE ID > 300 ORDER BY CompanyName; |
この例で、SQL Anywhere は次の 2 つの方法のどちらを採用するか決定する必要があります。
Customers テーブル全体を、会社名の順序で検索し、各ローの顧客の ID の値が 300 以上かどうかをチェックする。
ID カラムのキーを使用して、300 を超える ID を持つ会社だけを読み込む。結果を会社名順にソートする必要があります。
ID 値が 300 を超える会社がほとんどない場合は、2 番目の方法の方が優れています。スキャンするローの数が少なく、ソートにも時間がかからないからです。大半の会社の ID 値が 300 を超える場合は、ソートの必要がない最初の方法の方がはるかに優れています。
ID と CompanyName の 2 つのカラムでインデックスを作成すれば、上の例を解決できます。SQL Anywhere は、このインデックスを使用してテーブルからローを適切な順序で選択できます。ただし、インデックスはデータベース・ファイルの領域を消費し、更新にオーバヘッドがかかることは覚えておく必要があります。インデックスの作成は慎重に行ってください。インデックスの使用を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |