Por supuesto, su kilometraje variará - Esto dependerá de la cantidad de registros reales que está raspando en la parte inferior de esta tabla, pero aquí hay una alternativa.
Side Nota: Dado que tiene un campo "Date_Added", ¿valdría la pena considerar simplemente mantener el datetime de la última ejecución y usarlo en su cláusula where para filtrar los registros que se eliminarán? Ahora, en lugar de 20.000 registros, permitir que X número de días en el registro ... Es sólo una idea ...
- Obtener los registros que queremos mantener en un temp.
- Puede clasificar a los cuidadores como desee.
select top 20000 * into #myTempTable from MyTable ORDER BY DateAdded DESC
- Uso truncado no trash nuestro archivo de registro y utiliza menos recursos sys ...
truncate table MyTable
- Llevar nuestros registros guardados '' de vuelta al redil ...
- Esto supone que no está utilizando una columna de identidad - si usted es, usted debe
- especificar los nombres de campo en lugar de utilizar el algo '*' y hacer como
- SET_IDENTITY_INSERT MiTabla EN
- insertar en MiTabla seleccione campo1, campo2, field3 de #myTempTable
- (creo que es la derecha)
insert into MyTable select * from #myTempTable
- ser un buen ciudadano.
drop table #myTempTable
creo que sirve -
Tiene usted razón, su única tomando 3 segundos para limpiar la mesa con alrededor de 50.000 registros en ella. Pensé que las cláusulas IN() eran muy ineficientes, pero quizás eso sea justo cuando realmente pasas una lista textual de ID. Gracias por la ayuda. –
Sí, una cláusula IN() con 20,000 ID separados por comas probablemente sería bastante ineficiente. Sin embargo, apostaría que todavía se ejecutaría en algo así como 10-15 segundos. – MusiGenesis
Eso es si aceptó incluso analizar una cadena tan larga, por supuesto. – MusiGenesis