Recientemente un amigo me preguntó y dijo que le resultaba muy lento eliminar de millones a decenas de millones de datos en SQLSERVER. Lo ayudé a analizarlos y le hice algunas sugerencias que pueden ser útiles para muchas personas, y lo es. También es muy largo. Aún no he escrito un blog, analicémoslo juntos
si el espacio de su disco duro es pequeño y no desea configurar el registro de la base de datos al mínimo (porque desea que otros registros normales sigan existiendo). registrado), y tiene requisitos de velocidad relativamente altos y borra todos los datos, le sugiero que use turncate table1, porque truncar es una operación DDL, no genera reversión y es más rápido si no escribe registros. es un incremento automático, se restaurará a 1 y la eliminación generará una reversión. Si elimina una tabla con una gran cantidad de datos, la velocidad será muy lenta y ocupará muchos segmentos de reversión. registrar registros de nivel G, por supuesto, ¿qué pasa si hay eliminaciones condicionales como donde el tiempo <'2006-3-10'? ¿Puedo usar eliminar sin iniciar sesión? La respuesta es no. El motor de SQL Server está diseñado para registrar la eliminación. operaciones. Hasta ahora no hay forma de forzar que ciertas declaraciones no se registren en el registro. Si se ejecuta Eliminar Tabla1 donde Hora < '2006-3-10', el registro será muy grande (3-4G) porque hay muchas. registros involucrados. Si es posible, sugiero el siguiente método:
seleccione los registros que necesita mantener en una nueva tabla. Si usa el modo de recuperación completa
Dependiendo de la cantidad de registros SELECT INTO, el registro puede ser mayor.
Seleccione * en la Tabla2 desde la Tabla1 donde Hora > = '2006-03-10'
y luego trunque directamente la Tabla1. No se producirá ningún registro independientemente del modelo de recuperación.
Truncar la tabla Tabla1
y finalmente cambiar el nombre de Tabla2 a Tabla1
EC sp_rename 'Tabla2', 'Tabla1'
Fuente: BLOG: columna de domino