borrado muy lento

25/04/2006 - 19:06 por reo | Informe spam
tengo una tabla con 69000 registros de los cuales quiero borrar 106,
la instruccion que utilizo es:

delete from tabla que campo like '00012%' and campo in (select ndoc from
#tabla_temporal) and campo2='0001201'

donde #tabla_temporal tiene justamente esos 106 registros y esta creada de
la forma

create table #tabla_temporal(ndoc varchar(20))

bueno pues esto me llega a tardar hasta 9 minutos.

he probado a crear un indice:

CREATE INDEX indice ON tabla (campo,campo2)

pero sigue tardando lo mismo

la tabla no tiene triggers, pero tiene 9 restricciones con otras tablas.

¿como podria hacer para agilizar el borrado?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
25/04/2006 - 19:27 | Informe spam
reo,

Puedes postear la estructura de la tabla, incluyendo indices y
restricciones, y ademas el plan de ejecucion estimado de la sentencia
"delete"?


AMB

"reo" wrote:

tengo una tabla con 69000 registros de los cuales quiero borrar 106,
la instruccion que utilizo es:

delete from tabla que campo like '00012%' and campo in (select ndoc from
#tabla_temporal) and campo2='0001201'

donde #tabla_temporal tiene justamente esos 106 registros y esta creada de
la forma

create table #tabla_temporal(ndoc varchar(20))

bueno pues esto me llega a tardar hasta 9 minutos.

he probado a crear un indice:

CREATE INDEX indice ON tabla (campo,campo2)

pero sigue tardando lo mismo

la tabla no tiene triggers, pero tiene 9 restricciones con otras tablas.

¿como podria hacer para agilizar el borrado?

Muchas gracias



Respuesta Responder a este mensaje
#2 axelmdq
25/04/2006 - 21:24 | Informe spam
Prueba esto:

delete from tabla a que campo like '00012%' and exists (select 1 from
#tabla_temporal t where a.campo = t.campo) and campo2='0001201'

No se si te lo va a agilizar... pero es otra alternatica sin haber
visto la estructura completa de la tabla.

Saludos,
Alejandro.
Respuesta Responder a este mensaje
#3 Penta
25/04/2006 - 22:46 | Informe spam
Hola
Si tienes en la temporal los 106 registros a eliminar para que el
primer Like ? y la ultima condicion ?

No te basta con:

Delete from tabla
Where ndoc in ( Select ndoc from #temporal)

Salu2.
Penta.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida