Qué es más rápido: INSERT INTO o sp_executeSql

23/03/2007 - 13:44 por José Luis Capel - Aicom | Informe spam
Hola,

Tengo que hacer un volcado masivo de datos a un servidor SqlServer2000 a
través de Ado.

Actualmente estoy usando la sentencia INSERT INTO por cada fila.

Algo así:

FOR x := 1 TO 2000
...
oAdo:Execute("INSERT INTO miTabla VALUES( ..)")
...
NEXT

Me gustaría conocer vuestra opinión si cambio esa forma de hacer el insert
por


FOR x := 1 TO 2000
...
oAdo:Execute("exec sp_executesql N'INSERT INTO ..")
...
NEXT


Cualquier guia o ayuda será agradecida.

Saludos,
José Luis Capel

Preguntas similare

Leer las respuestas

#1 Maxi
23/03/2007 - 14:41 | Informe spam
Hola, son 2 cosas totalmente distintas, si es masivo porque no usas

INSERT INTO TUTABLA
SELECT CAMPOS FROM TABLA_ORIGINAL


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"José Luis Capel - Aicom" escribió en el mensaje
news:%
Hola,

Tengo que hacer un volcado masivo de datos a un servidor SqlServer2000 a
través de Ado.

Actualmente estoy usando la sentencia INSERT INTO por cada fila.

Algo así:

FOR x := 1 TO 2000
...
oAdo:Execute("INSERT INTO miTabla VALUES( ..)")
...
NEXT

Me gustaría conocer vuestra opinión si cambio esa forma de hacer el insert
por


FOR x := 1 TO 2000
...
oAdo:Execute("exec sp_executesql N'INSERT INTO ..")
...
NEXT


Cualquier guia o ayuda será agradecida.

Saludos,
José Luis Capel

Respuesta Responder a este mensaje
#2 José Luis Capel - Aicom
23/03/2007 - 16:05 | Informe spam
Hola Maxi,

Hola, son 2 cosas totalmente distintas, si es masivo porque no usas

INSERT INTO TUTABLA
SELECT CAMPOS FROM TABLA_ORIGINAL




Ya me gustaría hacerlo como indicas... pero el caso es que los insert
masivos son de una tabla DBF (xBase) a Sql Server...

¿Cuales diferencias básicas hay entre Insert Into y sp_executeSql?

Saludos y gracias por tu ayuda.
José Luis Capel
Respuesta Responder a este mensaje
#3 DNC
23/03/2007 - 16:32 | Informe spam
ya te dijo maxi que son cosas totalmente distintas.

busca sobre BCP, BULK INSERT, tambien podrias ver algo de DTS, etc.

por lo poco que se entiende de tu pregunta piensas leer los registros
de a uno e ir insertandolos en la tabla destino uno a uno? son 2000
registros siempre? es raro!


Busca en los BOLs:
La instrucción INSERT agrega una o más filas nuevas a una tabla.
Tratada de forma simplificada, INSERT tiene la siguiente forma:

INSERT [INTO] table_or_view [(column_list)] data_values
sp_executesql
Ejecuta una instrucción o proceso por lotes de Transact-SQL que puede
utilizarse muchas veces, o que se ha generado dinámicamente. La
instrucción o proceso por lotes de Transact-SQL puede contener
parámetros

saludos!
diego




On 23 mar, 12:05, "José Luis Capel - Aicom"
wrote:
Hola Maxi,

> Hola, son 2 cosas totalmente distintas, si es masivo porque no usas

> INSERT INTO TUTABLA
> SELECT CAMPOS FROM TABLA_ORIGINAL


Ya me gustaría hacerlo como indicas... pero el caso es que los insert
masivos son de una tabla DBF (xBase) a Sql Server...

¿Cuales diferencias básicas hay entre Insert Into y sp_executeSql?

Saludos y gracias por tu ayuda.
José Luis Capel
Respuesta Responder a este mensaje
#4 Maxi
24/03/2007 - 14:25 | Informe spam
Hola, no podemos comparar vacas con aviones, una cosa es insert into y otra
es SQL_dinamico donde dentro podrias tambien usar insert into


Saludos

[Microsoft MVP SQL Server]
SQLTOTALConsulting - Servicios y consultoria de SQLServer
www.sqlgurus.org
Buenos Aires - Argentina
http://msmvps.com/blogs/maxiaccotto/
"José Luis Capel - Aicom" wrote in message
news:%
Hola Maxi,

Hola, son 2 cosas totalmente distintas, si es masivo porque no usas

INSERT INTO TUTABLA
SELECT CAMPOS FROM TABLA_ORIGINAL




Ya me gustaría hacerlo como indicas... pero el caso es que los insert
masivos son de una tabla DBF (xBase) a Sql Server...

¿Cuales diferencias básicas hay entre Insert Into y sp_executeSql?

Saludos y gracias por tu ayuda.
José Luis Capel


Respuesta Responder a este mensaje
#5 Javier Loria
24/03/2007 - 20:50 | Informe spam
Hola Jose Luis:
Mi opinion, es que si menos de 10,000 filas no tendras ningun problema,
si son 100,000 es mejor buscar otras alternativas: DTS, BULK INSERT,
DTS/SSIS, etc.
Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"José Luis Capel - Aicom" wrote in message
news:%
Hola,

Tengo que hacer un volcado masivo de datos a un servidor SqlServer2000 a
través de Ado.

Actualmente estoy usando la sentencia INSERT INTO por cada fila.

Algo así:

FOR x := 1 TO 2000
...
oAdo:Execute("INSERT INTO miTabla VALUES( ..)")
...
NEXT

Me gustaría conocer vuestra opinión si cambio esa forma de hacer el insert
por


FOR x := 1 TO 2000
...
oAdo:Execute("exec sp_executesql N'INSERT INTO ..")
...
NEXT


Cualquier guia o ayuda será agradecida.

Saludos,
José Luis Capel

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida