2010-03-22 15 views
9

Tengo una aplicación a la que estoy accediendo con un servidor SQL. Una de las partes más utilizadas es cuando los usuarios seleccionan una respuesta a una pregunta, luego se dispara un procedimiento almacenado que ve si ya se ha dado una respuesta, si se ha ejecutado una ACTUALIZACIÓN, si no se ejecuta un INSERTAR.MERGE vs. UPSERT

Esto funciona bien pero ahora nos hemos actualizado a SQL Server 2008 express Me preguntaba si sería mejor/más rápido/más eficiente reescribir este SP para usar el nuevo comando MERGE.

¿Alguien tiene alguna idea de si esto es más rápido que hacer un SELECCIONAR seguido por un INSERTAR o ACTUALIZAR?

Respuesta

2

No vale la pena el esfuerzo. Posiblemente factible, pero no te dará nada notable.

MERGE se dirige especialmente a data warehouses donde saber qué insertar/actualizar es la parte más complicada. Permite que todas las operaciones (inserción, actualización) se realicen con UN conjunto de fusiones, en comparación con una para cada condición. Esto no hace una diferencia real en su caso.

Tengo una base de datos en la que estoy cargando 3-5 millones de filas en una tabla de 300 millones de filas: la fusión mejora mi rendimiento en un 50% (un escaneo de tabla en lugar de dos).

+1

Es un punto justo y aunque no estoy masticando, creo que si ofrece un mayor rendimiento como dijiste entonces podría aparecer en un episodio de "micro optimización de teatro" si obtengo algún tiempo de holgura en el proyecto y debe verse ocupado –

+10

"MERGE se dirige especialmente a almacenes de datos": me parece una tontería. – onedaywhen