17.00 - 17.05 - 外部結合から内部結合への変換 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
ユーザー ガイド
Publication ID
B035-1142-170K-JPN
Language
日本語 (日本)

場合によっては、問合わせブロック内の外部結合は内部結合に変換できます。

SELECTリクエストでNORMALIZEが指定されている場合は、クエリー リライトでそのリクエストが派生テーブルに後付けされ、テンポラル外部結合が書き換えられることはありません。

次の例について考えてみます。

     SELECT DISTINCT product_name
     FROM product LEFT OUTER JOIN sales ON 
          product_key=sales_product_key
     WHERE quantity > 10 ;

このリクエスト内の外部結合は、内部結合に安全に変換できます。これは、後続のWHERE述部によって非一致行がフィルタされるためです。 また、内部結合の書き換えを適用することにより、このリクエストは次のように書き換えられます。

     SELECT DISTINCT product_name
     FROM product, sales
     WHERE quantity > 10
     AND   product_key = sales_product_key;

同様に、次のリクエスト内の外部結合も内部結合に変換できます。これは、b2がNULLの場合、ON句の述部b2 < 10がFALSEになり、条件によって外部結合の非一致行がすべて削除されるためです。

     SELECT *
     FROM t1
     LEFT OUTER JOIN t2 ON a1=a2
     WHERE b2 < 10;