Dalam beberapa keadaan, melakukan suatu INSERT INTO <tablename> (WITH TABLOCK)
akan lebih cepat karena penebangan yang minimal. Keadaan tersebut termasuk memiliki database dalam BULK_LOGGED
model pemulihan.
Apakah ada manfaat kinerja potensial lainnya untuk digunakan WITH TABLOCK
pada INSERT
tabel kosong ketika database ( tempdb ) menggunakan SIMPLE
model pemulihan?
Saya bekerja dengan SQL Server 2012 Edisi Standar.
Kasus penggunaan saya adalah untuk membuat dan kemudian segera mengisi tabel temp dalam prosedur tersimpan menggunakan INSERT...SELECT
, yang dapat berisi sebanyak beberapa juta baris. Saya mencoba menghindari penyalahgunaan tempdb semacam itu , tetapi kadang-kadang diperlukan.
Saya mencoba membuat case untuk dibutuhkan TABLOCK
. Sepertinya itu tidak akan menyakiti apa pun, dan mungkin memiliki manfaat. Saya mencoba mencari tahu apakah ada potensi manfaat yang cukup untuk menambahkannya di mana saja di seluruh basis kode kami, di mana saya yakin tidak ada proses lain yang ingin menulis ke tabel.
Saya biasanya memasukkan ke dalam tabel temp lokal yang baru dibuat dengan PK berkerumun, tetapi kadang-kadang menggunakan heap.