2つのテーブルを同期させる必要があります。さんは、テーブルには、次の列が含まれていると仮定しよう:Oracle:複数の列で高速に入力しない
Table1: A, B, C, D
Table2: A, B, C, E
私はその後、(D)FとしてEを計算し、表2を更新し、表2に(A, B, C)
値を対応するエントリが存在しないことを表1にこのような行を見つける必要があります。
たとえば、唯一、私は次のクエリを記述します。
SELECT * FROM Table1 WHERE A NOT IN (SELECT A FROM Table2)
マルチコラムアナログは遅すぎるように思わ:
SELECT * FROM Table1 WHERE A NOT IN (SELECT A FROM Table2)
AND B NOT IN (SELECT B FROM Table2)
AND C NOT IN (SELECT C FROM Table2)
、このようなクエリを記述するための最良の方法は何ですか?
これは最適なソリューションではありません。 – erbsock
は、カラムa、b、cにはNULL値がない必要がありますが(NULLがある場合は、誤った答えがあります)、最適な解決策になります。 @erbsock:列がNOT NULLと宣言されている場合、オプティマイザは最も効率的なパス(ANTI-HASH JOIN ...)を使用できます。 –
@Vincent:11gと仮定していますか? – erbsock