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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ykx1561500561173.ditamap
dita:ditavalPath
ja-JP/ykx1561500561173.ditaval
dita:id
B035-1142
Product Category
Software
Teradata Vantage

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

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;