Esa es una pregunta muy amplia que básicamente se reduce a "depende". Los factores que la influyen incluyen:
¿Cuál es su nivel de concurrencia? Una instrucción delete coloca un bloqueo exclusivo en las filas afectadas. Dependiendo del motor de la base de datos, la distribución de datos eliminados, etc., que podría escalar a la página o tabla completa. ¿Pueden permitirse que sus lectores de datos se bloqueen durante la eliminación?
¿Cuán compleja es la declaración de eliminación? ¿A cuántas otras mesas se está sumando, o hay cláusulas WHERE complejas? A veces la identificación de las filas para eliminar puede ser más "costosa" que la eliminación en sí misma, por lo que una gran eliminación puede ser "más barata".
¿Tiene miedo a los interbloqueos? A medida que disminuye el tamaño de su eliminación, se reduce la "huella" de interbloqueo. Idealmente, las eliminaciones de una sola fila siempre tendrán éxito.
¿Le preocupa el rendimiento? Al igual que con cualquier instrucción SQL, hay una cantidad generalmente constante de sobrecarga (cosas de conexión, análisis de consultas, resultados de devolución, etc.). Desde un punto de vista de conexión única, una eliminación de 1000 líneas será más rápida que 1000 x eliminaciones de 1 línea.
No se olvide de gastos indirectos de mantenimiento de índice, limpieza de fragmentación o cualquier desencadenante. También pueden afectar tu sistema.
En general, sin embargo, comparo en 1000 líneas por extracto. La mayoría de los sistemas con los que he trabajado (sub-"empresa") terminan con un punto óptimo entre 500 y 5000 registros por eliminación. Me gustaría hacer algo como esto:
set rowcount 500
select 1 -- Just to force @@rowcount > 0
while @@ROWCOUNT > 0
delete from [table]
[where ...]
No se puede responder a esta pregunta vaga. No hay una bala de plata – zerkms
Utilizamos el trabajo por lotes del movimiento nocturno para mover registros de una tabla a otra. Ejecutamos lotes de 10.000 y el rendimiento alcanzado es insignificante. – Dimitri
Deberá intentar agregar algunos límites y controlar el rendimiento del servidor para obtener la mejor respuesta. – piotrekkr