2010-09-24 18 views
6

Necesito encontrar la mejor manera de insertar o actualizar datos en la base de datos utilizando el servidor sql y asp.net. Es un escenario estándar si los datos existen, se actualiza si no se inserta. Sé que hay muchos temas aquí sobre eso, pero nadie ha respondido lo que necesito saber.Inserción/actualización masiva de servidor Sql frente a MERGE en el escenario de inserción o actualización

Así que mi problema es que realmente no hay ningún problema cuando actualiza/inserta 5k - 10k filas pero con 50k y más.

Mi primera idea fue utilizar el comando sql server 2008 MERGE, pero tengo algunas consideraciones de rendimiento si serán más de 50k filas. Además, no sé si puedo margar los datos de esta manera, basados ​​no en la clave de identificación primaria (int) sino en otra clave única en la tabla. (para ser precisos, un número de serie del producto que no cambiará a tiempo).

Mi segunda idea fue primero obtener todas las publicaciones seriadas de productos, luego comparar las nuevas series de datos con eso y dividirlo en datos para insertar y datos para actualizar, luego solo hacer una inserción masiva y una actualización masiva.

Simplemente no sé cuál será mejor, con MERGE no sé cuál será el rendimiento y solo es compatible con el servidor sql 2008, pero parece bastante simple, la segunda opción no necesita sql 2008, los lotes deberían ser rápidos, pero seleccionar primero todas las publicaciones seriadas y dividir en función de ellos podría tener algunas penalizaciones de rendimiento.

¿Cuál es su opinión, qué elegir?

+0

¿Está decidiendo actualizar a 2008 o está distribuyendo una aplicación que puede necesitar ejecutarse en múltiples versiones de SQL Server? Porque si ya lo tienes, deberías poder probar Merge para el rendimiento. – JeffO

+0

Sí, necesitaré actualizar para usar Marge, eso no es un problema, pero si Marge empeora en rendimiento, entonces simplemente no sé si vale la pena. – Programista

Respuesta

4

Combinar performace mejor manera porque "Una de las ventajas más importantes de la instrucción MERGE es que todos los datos se lee y procesa una sola vez"

Usted no necesita una clave principal, puede unirse en uno o más campos de lo hace que sus registros sean únicos

+0

No lo entiendo –

+0

¿Qué parte de bruja no consigues? – Ivo

+0

No hay fusión masiva. ¿Cómo puede ser '' mucho mejor'' en el contexto de inserción y actualización masiva? –

2

No debería haber ningún problema al realizar la fusión en el número de serie como lo ha descrito. Le recomendamos que lea Optimizing MERGE Statement Performance para obtener las mejores prácticas recomendadas de Microsoft al usar MERGE.

Cuestiones relacionadas