コンテンツエリア開始

Function documentation 結合 Locate the document in its SAP Library structure

結合は、複数のテーブルを互いにリンクし、その結果として結合テーブルを返す SQL 文です。

参照:

SQL チュートリアルStructure link結合: 複数のテーブルからの情報

SQL 参照マニュアルJOIN 述語 (join_predicate)

機能

SQL オプティマイザのタスクは、テーブルを処理するために最適な順序を見つけることです。SQL オプティマイザは、リンク対象の新しいテーブルの行にできるだけ直接アクセスし、中間の結果テーブルのサイズを最小限に抑えようとします。このため、SQL オプティマイザは、最も制限された検索方針を使用する最小テーブルの結合から処理を開始します。これにより、最初は一時的な結果テーブルが小さく保たれます。

Note

SELECT 文の FROM 句に指定されているテーブルの順序は、これらの処理の順序には影響しません。

結合の検索方針

SQL オプティマイザは、以下の検索方針の 1 つを選択し、古い一時結果テーブルの結合列値から開始して、新しいテーブルの行にアクセスすることができます。

JOIN VIA INDEXED COLUMN

JOIN VIA KEY COLUMN

JOIN VIA KEY RANGE

JOIN VIA MULTIPLE INDEXED COLUMNS

JOIN VIA MULTIPLE KEY COLUMNS

JOIN VIA RANGE OF MULTIPLE INDEXED COL.

JOIN VIA RANGE OF MULTIPLE KEY COLUMNS

結合ステップで比較する2 つの列の長さが同じでない場合、SQL オプティマイザは、上記の検索方針をすべて使用することはできません。このような制限を回避するには、結合するすべての列の値範囲 (ドメイン) を同じように定義します。

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

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

Example

SELECT customer.cno, customer.title, customer.name,
       customer.zip, city.name, city.state, customer.address
  FROM   hotel.customer, hotel.city
  WHERE  customer.zip = city.zip

結合テーブル: CUSTOMER CITY
修飾: customer.zip = city.zip
CITY に使用される検索方針: TABLE SCAN
CUSTOMER に使用される検索方針: JOIN VIA KEY RANGE

EXPLAIN 文の結果

TABLENAME

COLUMN_OR_INDEX

STRATEGY

PAGECOUNT

CITY

 

TABLE SCAN

1

CUSTOMER

 

JOIN VIA KEY RANGE

1

 

 

TABLE TEMPORARY SORTED

 

 

ZIP

(USED SORT COLUMN)

 

 

 

RESULT IS COPIED
COSTVALUE IS


13

結合処理は、テーブル CITY へのアクセスから開始されます。これは、検索方針 TABLE SCAN を使用して実行されます。

JOIN VIA KEY RANGE を使用したテーブルCUSTOMER への結合移送の場合、列ZIP が使用されます。

結合の場合、結果セットは常に生成されます (RESULT IS COPIED)

参照:

データベースパラメータ JOIN_SEARCH_LEVEL

結合の EXPLAIN

SQL 参照マニュアルドメイン名 (domain_name)

 

 

コンテンツエリア終了