Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

DELETE in blocco su SQL Server 2008 (esiste qualcosa come la copia in blocco (bcp) per eliminare i dati?)

No.

Vuoi un DELETE con una clausola WHERE:questo è SQL standard.

Quello che puoi fare è eliminare in batch in questo modo:

SELECT 'Starting' --sets @@ROWCOUNT
WHILE @@ROWCOUNT <> 0
    DELETE TOP (xxx) MyTable WHERE ...

O se vuoi rimuovere una percentuale molto alta di righe...

SELECT col1, col2, ... INTO #Holdingtable
           FROM MyTable WHERE ..opposite condition..
TRUNCATE TABLE MyTable
INSERT MyTable (col1, col2, ...)
           SELECT col1, col2, ... FROM #Holdingtable