tempdb mdf/ldf ファイルは、shrinkfile、shrinkdatabase DBCC コマンドを使用して圧縮できます。
use tempdb
go
dbcc shrinkfile (tempdev, 'target size in MB')
go
dbcc shrinkfile (templog, 'target size in MB')
go
効率的な方法でコードを記述すると、tempdb の増大を回避できます。コードで「カーソル」を使用しないでください。これは、パフォーマンスの主要なキラーであり、カーソルのデータセットが大きいほど、tempdb のサイズが大きくなります。必要でない場合は、一時テーブルの使用を避けてください。#temptable、##temptable が必要ない場合にスコープ全体で使用すると、再びパフォーマンスの問題が発生します。
SQL 2005/2008 には、一時テーブルのデータをクエリできる CTE があり、スコープはその 1 行後です。
;With CTETable as
(
SELECT <Columnlist> FROM <TableName> {Joins} WHERE <Condition> GROUP BY <Column List> ORDER BY <COlumn> ASC
)
SELECT ColumnList from CTETABLE
....
Statements
その CTEtable のスコープは、「CTETABLE からの SELECT ColumnList」行の後に期限切れになります。このようにするとより効果的です。効果的なクエリを作成することも役立ちます。