SQL 200: Codigo eficiente - Optimizacion

23/03/2008 - 12:38 por Juan Carlos Mendoza | Informe spam
Buenas:

Estoy revisando codificacion de los programadores del area de
desarrollo a fin de sugerir cambios para optimizar los queries.

Cual codificacion es mas eficiente o conveniente, dando ambas el mismo
resultado?

Ejemplo1:
insert into tabla_destino
select campo1, campo2 from tabla_origen1
union
select campo3, campo4 from tabla_origen2

Ejemplo2:
Begin Tran
insert into tabla_destino
select campo1, campo2 from tabla_origen1
insert into tabla_destino
select campo3, campo4 from tabla_origen2
Commit Tran

La consulta va orientada a que en el Ejemplo1 la data que se va a
memoria es el acumulado total de los 2 selects y en el Ejemplo2 no
ocurre asi. Desde esa perspectiva, me parece que es mas eficiente el
ejemplo 2, o estoy errado en mi apreciacion?

Veo que los programadores, arman Inserts con el producto de 6 o 7
Selects unidos por UNION, y quisiera conocer la opinion del foro al
respecto, sobre cual codificacion es mas eficiente para la ejecucion,
porque

Saludos,

Juan Carlos Mendoza
 

Leer las respuestas

#1 Jesús López
23/03/2008 - 13:10 | Informe spam
Lo más eficiente sería el ejemplo 1, pero usando UNION ALL en vez de UNION.
Ya que UNION requiere eliminar duplicados lo que supone un procesamiento
adicional.

Es más eficiente el ejemplo1 porque todo lo ejecuta con una única
instrucción.

La diferencia de rendimiento ente usar UNION ALL y usar varias instrucciones
insert es cada vez menos apreciable cuando el número de registros insertados
sea más grande. Estoy seguro que cuando el número de registros es de unos
cuantos cientos, la diferencia de rendimiento es totalmente inapreciable y
no merece la pena preocuparse en absoluto. Tiene sentido usar UNION ALL
cuando cada SELECT va a devolver un único registro (o sólo unos poquitos,
por ejemplo menos de diez).

Saludos:

Jesús López
www.solidq.com


"Juan Carlos Mendoza" escribió en el mensaje
news:
Buenas:

Estoy revisando codificacion de los programadores del area de
desarrollo a fin de sugerir cambios para optimizar los queries.

Cual codificacion es mas eficiente o conveniente, dando ambas el mismo
resultado?

Ejemplo1:
insert into tabla_destino
select campo1, campo2 from tabla_origen1
union
select campo3, campo4 from tabla_origen2

Ejemplo2:
Begin Tran
insert into tabla_destino
select campo1, campo2 from tabla_origen1
insert into tabla_destino
select campo3, campo4 from tabla_origen2
Commit Tran

La consulta va orientada a que en el Ejemplo1 la data que se va a
memoria es el acumulado total de los 2 selects y en el Ejemplo2 no
ocurre asi. Desde esa perspectiva, me parece que es mas eficiente el
ejemplo 2, o estoy errado en mi apreciacion?

Veo que los programadores, arman Inserts con el producto de 6 o 7
Selects unidos por UNION, y quisiera conocer la opinion del foro al
respecto, sobre cual codificacion es mas eficiente para la ejecucion,
porque

Saludos,

Juan Carlos Mendoza

Preguntas similares