Estoy ejecutando un script de archivo que elimina las filas de un gran (~ 50m base de datos de registro) en función de la fecha en que se ingresaron. El campo de fecha es el índice agrupado de la tabla y, por lo tanto, a qué estoy aplicando mi declaración condicional.sql server delete ralentizado drásticamente por los índices
Estoy ejecutando esta eliminación en un ciclo while, intentando cualquier cosa entre 1000 y 100.000 registros en un lote. Independientemente del tamaño del lote, es sorprendentemente lento; algo así como 10.000 registros que se eliminan por minuto. En cuanto al plan de ejecución, hay mucho tiempo dedicado a "Eliminar índice". Hay aproximadamente 15 campos en la tabla, y aproximadamente 10 de ellos tienen algún tipo de índice. ¿Hay alguna forma de evitar este problema? Ni siquiera estoy seguro de por qué lleva tanto tiempo eliminar cada índice, ¿alguien puede arrojar algo de luz sobre qué está pasando exactamente aquí? Esta es una muestra de mi plan de ejecución:
alt text http://img94.imageshack.us/img94/1006/indexdelete.png
(Los puntos de secuencia para el comando Eliminar)
Esta base de datos está vivo y se está insertado en frecuencia, por lo que estoy indeciso a utilice el método de copiar y truncar para recortar el tamaño. ¿Hay alguna otra opción que me falta aquí?
¿Es completamente necesario tener todos estos índices? Si no está usando los índices, debería deshacerse de ellos. –
Acabo de hablar con el programador principal en nuestro sitio, y parece que probablemente ya no los necesitemos todos. Si bien hacemos algunas consultas sobre la mesa, es mucho más utilizado como una tabla de tipo registro. Puedo tratar de soltar algunas inserciones antes de volver a ejecutar el script de eliminación. – Kevin