堆疊表(無叢集索引)中,可變長度欄位更新導致資料列超出頁面容量時,資料列會移至新頁,原位置留下一個 16 位元組的轉發指標指向新位置(圖 1)。這是為了避免更新所有非叢集索引的 RID 指標。

圖 1. Forwarded Record 示意圖
掃描堆疊表或書籤查找時,每遇一個 Forwarded Record 就需額外一次 I/O 讀取新頁。大量更新導致大量轉發指標,I/O 成倍增加。

圖 2. 初始儲存頁面數

圖 3. 產生 8 萬+ Forwarded Record
此時全表掃描 I/O 暴增。解決方案:重建叢集索引或 `ALTER TABLE ... REBUILD` 消除轉發指標。