SQL Server 提供 DBCC PINTABLE 將指定資料表的資料頁標記為「記憶體常駐」,避免被緩衝區淘汰,適合小型、高頻存取的查閱表(如代碼表、設定表)。本文說明語法、操作範例、驗證指令與風險提醒。
-- 釘選表 Department
DECLARE @db_id INT, @tbl_id INT;
USE MyDatabase;
SET @db_id = DB_ID('MyDatabase');
SET @tbl_id = OBJECT_ID('Department');
DBCC PINTABLE (@db_id, @tbl_id);
-- 取消釘選
DBCC UNPINTABLE (@db_id, @tbl_id);
SELECT OBJECTPROPERTY(OBJECT_ID('Department'), 'TableIsPinned');
-- 回傳 1 表示已釘選,0 表示未釘選
PINTABLE 不會立即讀入資料,而是當資料頁被查詢讀入緩衝區時標記為常駐頁,後續不會被淘汰。UNPINTABLE。