При некоторых обстоятельствах выполнение INSERT INTO <tablename> (WITH TABLOCK)будет быстрее из-за минимальной регистрации. К таким обстоятельствам относится наличие базы данных в BULK_LOGGEDмодели восстановления.
Есть ли другие потенциальные выгоды производительности для использования WITH TABLOCKна условиях INSERTна пустом столе , когда база данных ( Tempdb ) использует SIMPLEмодель восстановления?
Я работаю с SQL Server 2012 Standard Edition.
Мой вариант использования для создания и последующего немедленного заполнения временной таблицы в хранимой процедуре с использованием переменной INSERT...SELECT, которая может содержать до нескольких миллионов строк. Я стараюсь избегать такого рода злоупотреблений tempdb , но иногда это необходимо.
Я пытаюсь построить дело по требованию TABLOCK. Похоже, это не повредит и может принести пользу. Я пытаюсь выяснить, достаточно ли потенциальной выгоды, чтобы добавить ее везде в нашей базе кода, где я уверен, что нет никакого другого процесса, который хочет писать в таблицу.
Я обычно вставляю во вновь созданную локальную временную таблицу с кластеризованным PK, но иногда использую кучу.