LEFTSEMI JOIN左半開接続
2222 ワード
左半開接続(LEFTSEMI JOIN)は、右のテーブルについてON文の判定条件を満たすことを前提として、左のテーブルのレコードを返します.一般的なイントラコネクション(INNER JOIN)にとって、これは特殊で、最適化された場合です.ほとんどのSQL方言はIN...EXISTS構造で処理されます.例えば、以下に示すクエリは、限定配当金支払日内の株式取引記録を戻そうとするが、このクエリHiveはサポートされていない.
ただし、ユーザーは以下のLEFT SEMI JOIN構文を使用して同じ目的を達成することができます.
SELECT文およびWHERE文では右の表のフィールドには参照できません.
Hiveは右半開接続をサポートしていません(RIGHT SEMI JOIN)
LEFT SEMI JOINは通常のINNER JOINよりも効率的です.左の表に指定されたレコードがある場合、右の表に一致するレコードが見つかったら、Hiveはすぐにスキャンを停止します.
-- HIVE
SELECT s.ymd,s.symbol.s.price_close FROM stocks s
WHERE s.ymd,s.symbol IN
(SELECT d.ymd,d.symbol FROM dividends d);
ただし、ユーザーは以下のLEFT SEMI JOIN構文を使用して同じ目的を達成することができます.
SELECT s.ymd,s.symbol,s.price_close
FROM stocks s LEFT SEMI JOIN dividends d ON s.ymd = d.ymd AND s.symbol = d.symbol;
SELECT文およびWHERE文では右の表のフィールドには参照できません.
Hiveは右半開接続をサポートしていません(RIGHT SEMI JOIN)
LEFT SEMI JOINは通常のINNER JOINよりも効率的です.左の表に指定されたレコードがある場合、右の表に一致するレコードが見つかったら、Hiveはすぐにスキャンを停止します.