コンテンツエリア開始

Background documentation FETCH 時間への検索の延期 Locate the document in its SAP Library structure

SQL オプティマイザは、絶対に必要になるまでできるだけ結果テーブルを登録しません。

結果テーブルを登録する必要がない場合、検索は FETCH 時間まで延期することができます。この方法により、結果用としてメモリは使用されないため、最初の結果に迅速にアクセスすることができます。

結果テーブルが登録される場合

ただし、状況によっては常に結果テーブルを登録する必要があるため、常に検索を FETCH 時間まで延期できるとは限りません。

      複数のテーブルに対する SELECT (結合)

      SELECT ...FOR REUSE

一般的に、結果テーブルを登録する必要があるのは以下の場合です。

      SELECT DISTINCT ...

      SELECT ...ORDER BY ...

結果テーブルが登録されない場合

以下のすべての条件が当てはまる場合、結果テーブルを登録する必要はありません。

      DISTINCT 指定 (いくつかの例外あり) または構文要素 FOR REUSE が指定されていない場合。

      ソート対象の列が指定した順序と指定したソート順 (昇順または降順) で索引を構成している場合。

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

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

EXPLAIN を使用して、結果テーブルが登録されるか ( STRATEGY RESULT IS COPIED のエントリ) 登録されないか ( STRATEGY: RESULT IS NOT COPIED のエントリ) を確認することができます。

Example

SELECT zip, name FROM hotel.city
  WHERE ROWNO < 5
  ORDER BY name, zip DESC

修飾: ROWNO < 5 ORDER BY name, zip DESC
テーブル CITY の一次キー: zip
修飾列の索引: なし
使用される検索方針: TABLE SCAN

EXPLAIN 文の結果

TABLENAME

COLUMN_OR_INDEX

STRATEGY

PAGECOUNT

CITY

 

TABLE SCAN

11

 

 

RESULT IS COPIED
COSTVALUE IS


3

結果テーブルが登録されます (RESULT IS COPIED)

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

参照:

検索方針

結合の検索方針

すべての検索方針の一覧

SQL 参照マニュアルFETCH (fetch_statement)DISTINCT 指定 (distinct_spec)SELECT (select_statement)

 

 

コンテンツエリア終了