En primer lugar, déjenme decir que me estoy ejecutando en SQL Server 2005, por lo que no tengo acceso a MERGE
.Borrar todo/Inserción masiva
Tengo una tabla con ~ 150k filas que actualizo a diario desde un archivo de texto. Como las filas caen del archivo de texto, necesito eliminarlas de la base de datos y si cambian o son nuevas, necesito actualizarlas/insertarlas en consecuencia.
Después de algunas pruebas, he encontrado que en cuanto al rendimiento, es exponencialmente más rápido hacer una eliminación completa y luego insertar a granel desde el archivo de texto en lugar de leer el archivo línea por línea haciendo una actualización/inserción. Sin embargo, recientemente encontré algunas publicaciones que trataban de imitar la funcionalidad MERGE
de SQL Server 2008 utilizando una tabla temporal y el resultado de la declaración UPDATE
.
Me interesó porque estoy investigando cómo puedo eliminar el tiempo en mi método Eliminar/Inserción masiva cuando la tabla no tiene filas. Todavía creo que este método será el más rápido, así que estoy buscando la mejor manera de resolver el problema de la mesa vacía.
Gracias
Gracias por las sugerencias, no sabía acerca de Truncate y probablemente lo use, pero estoy tratando de eliminar el corto período de tiempo entre la eliminación y la inserción masiva cuando la tabla está vacía. ¿Algunas ideas? – rpf3
@ rpf3: Prueba TRUNCATE. Creo que eliminará gran parte de la demora de la que estás hablando. –
El truncamiento fue definitivamente más rápido que el borrado, pero aún demora ~ 9 segundos para el inserto masivo. Me han preguntado si hay una manera de eliminar incluso esta pequeña cantidad de tiempo de inactividad porque otros procesos pueden afectar la base de datos durante el tiempo de ejecución. – rpf3