sono d'accordo con le persone che ti vogliono loop su un insieme ridotto di record, questo sarà più veloce che cercare di fare tutta l'operazione in un unico passaggio. Puoi provare con il numero di record che dovresti includere nel ciclo. Circa 2000 alla volta sembra essere il punto debole nella maggior parte delle tabelle. Faccio grandi deltes, anche se alcuni hanno bisogno di quantità minori come 500. Dipende dal numero di chiavi di forign, dimensione del record, trigger ecc, quindi ci vorranno davvero alcuni sperimentano per trovare ciò di cui hai bisogno. Dipende anche da quanto sia pesante l'uso del tavolo. Una tabella ad accesso pesante avrà bisogno di ogni iterazione del ciclo per eseguire una quantità di tempo più breve. Se è possibile eseguire durante le ore di pausa, o ancora meglio in modalità utente singolo, è possibile avere più record eliminati in un ciclo.
Se non pensi di farlo in una notte durante le ore di riposo, potrebbe essere meglio progettare il ciclo con un contatore e fare un numero fisso di iterazioni ogni notte fino a quando non viene eseguito.
Inoltre, se si utilizza una transazione implicita anziché una esplicita, è possibile interrompere la query del ciclo in qualsiasi momento e i record già eliminati rimarranno cancellati tranne quelli nel ciclo corrente del ciclo. Molto più veloce del tentativo di rollback di mezzo milione di dischi perché hai bloccato il sistema.
Generalmente è consigliabile eseguire il backup di un database immediatamente prima di intraprendere un'operazione di questo tipo.
Mmm, suona come dati periodici storici/... –