Necesito sincronizar dos tablas. Vamos a suponer que las tablas contienen columnas siguientes:Oracle: Fast NOT IN para múltiples columnas
Table1: A, B, C, D
Table2: A, B, C, E
necesito encontrar muchas filas de la Tabla 1 que no hay entrada con sus correspondientes valores en (A, B, C)
Tabla 2, a continuación, calcular E, F (D) y la actualización Tabla2.
Si necesito hacer una correspondencia, p. Una única, que iba a escribir la siguiente consulta:
SELECT * FROM Table1 WHERE A NOT IN (SELECT A FROM Table2)
analógico varias columnas parece ser demasiado lento:
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)
¿Cuál es la mejor manera de escribir dicha consulta?
Esta es una solución menos que óptima. – erbsock
que sería la mejor solución, aunque las columnas a, b, c no deben tener valores NULL (si hay valores NULL, la respuesta será incorrecta). @erbsock: si las columnas se declaran NOT NULL, el optimizador podrá usar las rutas más eficientes (ANTI-HASH JOIN ...) –
@Vincent: ¿está asumiendo 11g? – erbsock