Estoy de acuerdo con las personas que te quieren bucle sobre un conjunto más pequeño de los registros, esto va a ser más rápido que tratando de hacer toda la operación en un solo paso. Puede experimentar con la cantidad de registros que debe incluir en el ciclo. Alrededor de 2000 a la vez parece ser el punto ideal en la mayoría de las tablas en las que realizo grandes deltes, aunque algunas necesitan cantidades menores, como 500. Depende del número de claves, el tamaño del registro, los factores desencadenantes, etc., así que realmente tomará algunos experimentando para encontrar lo que necesita También depende de qué tan pesado sea el uso de la mesa. Una tabla muy visitada necesitará que cada iteración del ciclo se ejecute durante un período de tiempo más corto. Si puede ejecutar fuera de horas, o mejor aún en modo de usuario único, puede eliminar más registros en un bucle.
Si no cree que haga esto en una noche durante las horas libres, podría ser mejor diseñar el ciclo con un contador y solo hacer un número determinado de iteraciones cada noche hasta que finalice.
Además, si utiliza una transacción implícita en lugar de una explícita, puede eliminar la consulta de bucle en cualquier momento y los registros ya eliminados permanecerán eliminados, excepto los de la ronda actual del bucle. Mucho más rápido que tratar de deshacer medio millón de registros porque has detenido el sistema.
Por lo general, es una buena idea hacer una copia de seguridad de una base de datos inmediatamente antes de realizar una operación de esta naturaleza.
Mmm, suena como datos periódicos históricos/... –