Tengo una lista de objetos, esta lista contiene aproximadamente 4 millones de objetos. hay un proceso almacenado que toma los atributos de los objetos como parámetros, realiza algunas búsquedas e los inserta en tablas.C# - Insertar varias filas usando un procedimiento almacenado
lo que es la forma más eficiente para insertar este 4 millones de objetos al PP?
cómo lo hago:
-- connect to sql - SQLConnection ...
foreach(var item in listofobjects)
{
SQLCommand sc = ...
// assign params
sc.ExecuteQuery();
}
esto ha sido muy lento.
¿hay una mejor manera de hacer esto?
este proceso será una tarea programada. correré esta hora, así que espero datos de alto volumen como este.
bien sólo una nota rápida, el procedimiento almacenado. está haciendo algunas búsquedas, no está haciendo inserción directa. – DarthVader
La forma normal de solucionar ese problema es hacer sus búsquedas antes de insertar. No es perfectamente transaccional, pero si está insertando 4 millones de registros, realmente no debería hacerlo de una manera que requiera aislamiento transaccional si puede evitarlo en absoluto. –
+1: Esta es de lejos la mejor respuesta. Utilicé esta técnica en múltiples ocasiones exactamente como lo describió hasta en la tabla de etapas y el procedimiento almacenado. Funciona bastante bien. –