コンテンツエリア開始

Background documentation OR を使用してリンクされた検索条件 Locate the document in its SAP Library structure

OR を使用してリンクされた検索条件が含まれるSQL 文の場合、SQL オプティマイザは、最初に各検索条件を個別に分析します。

Example

b1 AND b2 AND (b3 OR (b4 AND b5))

b1b2 および (b3 OR (b4 AND b5)) は最初に個別に分析されます。オプティマイザがキー列 b1 または b2 の等価条件を検出した場合、検索範囲は事実上これ以上制限できないため、検索方針を選択するときに (b3 OR (b4 AND b5)) を考慮する必要はありません。

キー列の等価条件が検出されない場合、OR を使用してリンクされた他の検索条件 (まだ考慮されていない条件) が分析されます。SQL オプティマイザは以下の処理を実行します。

..

       1.      論理和標準形に変換します。

Example

b1 AND b2 AND (b3 OR (b4 AND b5))

を論理和標準形に変換します。

(b1 AND b2 AND b3) OR (b1 AND b2 AND b4 AND b5)

       2.      新しい式を分析します。
括弧で囲まれた新しい式は個別に分析します。

       3.      コストを決定します。
論理和標準形の括弧で囲まれた式についてさまざまな検索方針のコストが合計されます。検索方針として最初に決定されたコストよりもこの合計の方が小さい場合、OR を使用してリンクされた検索条件は考慮せずに、これらのさまざまな検索方針が使用されます。

Example

(b1 AND b2 AND b3) (b1 AND b2 AND b4 AND b5) の合計コストの方が b1 b2 の検索方針のコストより小さい場合、(b1 AND b2 AND b3) (b1 AND b2 AND b4 AND b5) の方針が使用されます。

       4.      最も費用対効果の高い検索方針を使用して SQL 文を実行します。

SQL オプティマイザを説明するために使用する例は、スキーマ HOTEL におけるデモデータベースDEMODB とその完全なデモデータにもとづいています。

データベースシステムのコンセプトスキーマ HOTEL のオブジェクト

Example

SELECT * FROM hotel.customer
  WHERE name = 'Smith' AND firstname = 'Sally'
     OR name = 'Miller' AND firstname = 'Sally'

修飾: name = 'Smith' AND firstname = 'Sally'
       OR name = 'Miller' AND firstname = 'Sally'

テーブル CUSTOMER の一次キー: cno
修飾列の索引: FULL_NAME_INDEX (name, firstname)
使用される検索方針、第 1 述語: EQUAL CONDITION FOR INDEX
使用される検索方針、第 2 述語: EQUAL CONDITION FOR INDEX

複数の AND 条件が 1 つの OR 条件にリンクされています。AND 条件は OR 条件よりも優先されます。AND 条件ごとに最善のアクセス方針が決定されます。これらの AND 条件は両方とも、等価条件を使用して 2 つの索引列を修飾しています。このため、これらはそれぞれ EQUAL CONDITION FOR INDEX を使用して処理することができます。ADDL QUALIFICATION ON INDEX が出力されます。これは、索引で OR を使用してリンクされた列もチェックされるためです。

EXPLAIN 文の結果

TABLENAME

COLUMN_OR_INDEX

STRATEGY

PAGECOUNT

CUSTOMER

 

DIFFERENT STRATEGIES FOR OR TERMS

34

 

FULL_NAME_INDEX

EQUAL CONDITION FOR INDEX

 

 

 

ADDNL. QUALIFICATION ON INDEX

 

 

NAME

(USED INDEX COLUMN))

 

 

FIRSTNAME

(USED INDEX COLUMN))

 

 

FULL_NAME_INDEX

EQUAL CONDITION FOR INDEX

 

 

 

ADDNL. QUALIFICATION ON INDEX

 

 

NAME

(USED INDEX COLUMN))

 

 

FIRSTNAME

(USED INDEX COLUMN))

 

 

 

RESULT IS COPIED
COSTVALUE IS

14

その他の SQL 文の簡単な例については、Structure linkSQL チュートリアルを参照してください。

参照:

EXPLAIN

すべての検索方針の一覧

 

 

コンテンツエリア終了