データベースインスタンスのパフォーマンスは、データベースインスタンスの設定、データベース設計、および個々の SQL 文の公式に大きく左右されます。
検索条件によって、SQL 文の検索領域が示されます。検索条件は、AND または OR を使用してリンクすることができるブール式 (条件) です。AND 条件を使用すると検索領域が狭まり、OR 条件を使用すると検索領域が広がります。
SELECT firstname, name, zip
FROM hotel.customer
WHERE (title ='Company') AND (name >
'Randolph')
検索条件を満たすために、データベースシステムでは、テーブル全体が常に検索されます (TABLE SCAN)。ただし、多くの場合、この方法がもっとも効率的であるとは限りません。検索領域を制限すると、検索条件に当てはまるデータレコード内をデータベースシステムがより効率的に検索することができます。
このため、データベースシステムによって検索されるテーブル領域のデータレコードがソートされている場合も、検索が効率的になります。これが、テーブルのキーが果たす役割です。各テーブルには一次キーがあります。二次キー (索引) を定義することもできます。これにより、1 つ以上の列を登録することができます。
SQL 文をできるだけ迅速に処理するには、データベースシステムで特に以下の手順が使用される必要があります。
● データベースシステムによって、SQL 文が検索に最適なフォームに変換されます。
SQL 文の自動変換を参照してください。
● データベースシステムによって、各 SQL 文に最適な検索方針が算出されます。
SQL オプティマイザを参照してください。
参照:
SQL 参照マニュアル、検索条件 (search_condition)
● 最適な入出力パフォーマンスを実現するには、データベースの計画の注記に従ってください。
● データを定義する場合は、データベース設計のヒントに注意してください。
● SQL オプティマイザ統計を定期的に更新してください。特に、大量のデータが変更された後に更新することが重要です。
● 索引には、できるだけ選択的な列 (数多くの異なる値を持つ列) を使用します。
● 検索条件ができるだけ選択的になるように公式化します。
一部の行によって実行される検索条件のみを公式化します。通常、ユーザが検索条件の値を選択することができる場合、ユーザは値を入力しません。したがって、データベースシステムでは、検索に含まれる各行に関して効果的でない検索条件が評価されることになります。ユーザの入力に応じて異なる SELECT 文を実行することをお奨めします。
● 索引条件の先頭には、もっとも選択的な検索条件を配置します。これにより、データベースシステムでは、すべての検索条件を評価する前に、検索を完了することができます。
● 検索条件
columnx IN (1,13,24,...)
は、SQL オプティマイザによって、意味的には同一な以下の検索条件よりも効率的に評価されます。
columnx=1 OR columnx=13 OR columnx=24 OR ...
参照:
SAP ノート 819641