Saya setuju dengan saran untuk mengelompokkan penghapusan Anda ke dalam potongan yang dapat dikelola jika Anda tidak dapat menggunakan TRUNCATE, dan saya suka saran drop / buat orisinalitasnya, tetapi saya ingin tahu tentang komentar berikut dalam pertanyaan Anda:
Ini pada dasarnya setara dengan pernyataan TRUNCATE TABLE - kecuali saya tidak diizinkan untuk menggunakan TRUNCATE
Saya menduga alasan pembatasan ini berkaitan dengan keamanan yang perlu diberikan untuk langsung memotong tabel dan fakta bahwa itu akan memungkinkan Anda untuk memotong tabel selain yang Anda khawatirkan.
Dengan asumsi itu yang terjadi, saya bertanya-tanya apakah memiliki prosedur tersimpan dibuat yang menggunakan TRUNCATE TABLE dan menggunakan "EXECUTE AS" akan dianggap sebagai alternatif yang layak untuk memberikan hak keamanan yang diperlukan untuk memotong tabel secara langsung.
Mudah-mudahan, ini akan memberi Anda kecepatan yang Anda butuhkan sambil juga mengatasi masalah keamanan yang mungkin dimiliki perusahaan Anda dengan menambahkan akun Anda ke peran db_ddladmin.
Keuntungan lain menggunakan prosedur tersimpan dengan cara ini adalah prosedur tersimpan itu sendiri dapat dikunci sehingga hanya akun tertentu yang diizinkan untuk menggunakannya.
Jika karena alasan tertentu ini bukan solusi yang dapat diterima dan kebutuhan Anda untuk menghapus data dalam tabel ini adalah sesuatu yang perlu dilakukan sekali sehari / jam / dll, saya akan meminta agar pekerjaan SQL Agent dibuat untuk memotong tabel pada waktu yang dijadwalkan setiap hari.
Semoga ini membantu!