Declaración MERGE
8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Misc | PL / SQL | SQL | RAC | WebLogic | Linux
Inicio «Artículos» 9i «aquí
La instrucción MERGE
se introdujo en Oracle 9i para insertar o actualizar condicionalmente datos dependiendo de su presencia, un proceso también conocido como «upsert». La instrucción MERGE
reduce los escaneos de tablas y puede realizar la operación en paralelo si es necesario.
- Sintaxis
- Rendimiento
Artículos relacionados.
- La declaración MERGE
- Mejoras en la declaración MERGE Oracle Database 10g
Sintaxis
Considere el siguiente ejemplo donde los datos de la tabla HR_RECORDS
se combinan en la EMPLOYEES
tabla.
La fuente también puede ser una consulta.
Rendimiento
La MERGE
está optimizada para fusionar conjuntos de datos, en lugar de filas individuales, como se muestra en el siguiente ejemplo.
Cree las siguientes tablas de prueba. La tabla de origen contiene todas las filas del ALL_OBJECTS
vista, mientras que la tabla de destino contiene aproximadamente la mitad de las filas.
El siguiente código compara el rendimiento de cuatro operaciones de combinación. El primero usa la instrucción MERGE
directa. El segundo también usa la instrucción MERGE
, pero de una manera fila por fila. El tercero realiza una actualización e inserta condicionalmente la fila si la actualización toca cero filas. El cuarto inserta la fila, luego realiza una actualización si la inserción falla con un valor duplicado en la excepción de índice.
El resultado muestra que la instrucción MERGE
recta es una orden de magnitud más rápido que su rival más cercano. La actualización / inserción realiza casi el doble de velocidad que la inserción / actualización e iguala a la MERGE
fila por fila.
Simplemente comparando la actualización / inserción y los métodos de inserción / actualización de forma aislada, tenemos que recordar que las comparaciones variarán según los datos de la tabla. Si la mayoría de los datos aún no estarán presentes, el enfoque de inserción / actualización puede ser mejor. Si la mayoría de los datos ya están presentes, el enfoque de actualización / inserción probablemente sea mejor. Si no está seguro, use merge ya que es más claro.
Además de que la instrucción MERGE
directa es más rápida, porque es una instrucción DML que puede se puede ejecutar fácilmente en paralelo para mejorar aún más el rendimiento, siempre que su servidor pueda manejar la carga adicional.
Para obtener más información, consulte:
- La declaración MERGE
- Mejoras en la declaración MERGE en Oracle Database 10g
- MERGE
Espero que esto ayude. Saludos Tim …
Volver al principio.