状況INSERT INTO <tablename> (WITH TABLOCK)
によっては、ロギングが最小限であるため、実行が高速になります。これらの状況には、BULK_LOGGED
復旧モデルにデータベースを含めることが含まれます。
データベース(tempdb)が復旧モデルを使用しているときに、空のテーブルで使用することWITH TABLOCK
でパフォーマンス上の利点は他INSERT
にありますか?SIMPLE
SQL Server 2012 Standard Editionを使用しています。
私のユースケースは、を使用してストアドプロシージャ内に一時テーブルを作成し、すぐにデータを取り込むINSERT...SELECT
ことです。私はそのようなtempdbの乱用を避けようとしますが、時々必要になります。
私は必要なケースを構築しようとしていますTABLOCK
。それは何も傷つけないようで、利益があるかもしれません。コードベースのどこにでもそれを追加するのに十分な潜在的な利点があるかどうかを把握しようとしています。テーブルに書き込みたい他のプロセスがないと確信しています。
通常、クラスター化されたPKで新しく作成されたローカル一時テーブルに挿入しますが、時々ヒープを使用します。