Eu entendo que há muitas variáveis nisso e não estou procurando um número exato de min:seg :) Eu li muitos recursos que afirmam que a TRUNCATE
usa muito menos recursos do que a DELETE
e, portanto, terá um desempenho mais rápido. Mas não há ordem de grandezas mencionada. Como a TRUNCATE
é uma operação DDL (Data Definition Language) e não uma operação DML (Data Manipulation Language) e apenas as tabelas do sistema fazem parte da transação, estou presumindo que não deve demorar muito.
Alguém com experiência em fazer isso com uma mesa próxima desse tamanho que possa dar alguma dica? Estamos falando até um minuto, até uma hora, dias, semanas?
Um milissegundo mais ou menos.
Truncar é O(1) - uma operação de metadados pura.
Isso pressupõe que não haja atividade simultânea na mesa.
Truncar potencialmente precisará esperar até que as leituras existentes sejam feitas para adquirir um
Sch-M
bloqueio (modificação de esquema).Para tabelas grandes, a desalocação real é feita de forma assíncrona em um thread em segundo plano ( SQL Server 2000 SP3 em diante ).
Para alguns outros mitos sobre truncar, consulte Um mito de DBA do SQL Server por dia: (19/30) TRUNCATE TABLE não é registrado por Paul S. Randal.