場合によっては、問合わせブロック内の外部結合は内部結合に変換できます。
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;