Pregunta

¿Cuál es el mejor método para guardar miles de filas y, después de hacer algo, actualizarlas?

Actualmente, uso una tabla de datos, rellenándola, cuando termine de insertarla

MyDataAdapter.Update(MyDataTable)

Después de hacer algún cambio en MyDataTable, nuevamente uso el método MyDataAdapter.Update (MyDataTable).

Edición :

Lamento no proporcionar más información.

Puede haber hasta 200,000 filas que se crearán a partir de un archivo XML. Allí se guardarán las filas en la base de datos. Después de eso habrá algún proceso para cada fila. Y tendré que actualizar cada fila en la base de datos.

En lugar de actualizar fila por fila, decidí actualizar la tabla de datos y usar el mismo adaptador de datos para actualizar las filas.

Esto es lo mejor de mí.

Creo que puede haber un enfoque más inteligente.

¿Fue útil?

Solución

Al reaccionar a sus comentarios:

Un DataAdapter.Update() actualizará (e insertará / eliminará) fila por fila. Si tiene cambios individuales, realmente no hay forma más rápida. Si tiene cambios sistemáticos, como SET Price = Price+ 2 WHERE SelByDate < '1/1/2010' es mejor si ejecuta un DbCommand contra la base de datos.

Pero tal vez debería preocuparse por las transacciones y el manejo de errores antes del rendimiento.

Otros consejos

Si entiendo correctamente, está realizando dos operaciones separadas: cargar filas en una base de datos y luego actualizar esas filas.

Si las filas que está insertando provienen de otro origen de datos compatible con ADO.NET, entonces puede usar SqlBulkCopy para insertar las filas en lotes, lo que será más eficiente que usar una tabla de datos.

Una vez que las filas están en la base de datos, supongo que sería mejor ejecutar un SQLCommand para modificar sus valores.

Si puede proporcionar más detalles acerca de qué, y por qué, está haciendo la pregunta, entonces quizás podamos adaptar mejor una respuesta para ello.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top