首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 已分區索引特殊指導原則 (三):非叢集索引分區與包含欄位自動新增機制

     編輯:關於SqlServer

MSDN 原文核心規則

對非唯一非叢集索引分區時,SQL Server 預設將分區欄位加為 非鍵 (INCLUDE) 欄位,確保索引與基表對齊。若索引已包含分區欄位則不再新增。

驗證實驗設計

  1. 建立分區函數 Fun_ClassifyResult_ClassId(INT) RANGE RIGHT (10000000, 20000000)。
  2. 建立分區表 ClassifyResult,叢集索引 (Id, ClassId) ON 分區方案。
  3. 建立 非唯一非叢集索引 IX_ClassifyResult_ArchiveId (ArchiveId) ON 相同分區方案,未指定 ClassId。
  4. 預期:SQL Server 自動轉為 INCLUDE (ClassId)。

驗證方法:執行計畫觀察 Key Lookup 是否消失

-- 查詢僅需 ArchiveId (索引鍵) → Seek 無 Lookup
SELECT TOP 10 Id, ArchiveId FROM ClassifyResult WHERE ArchiveId = 107347;

-- 查詢需 ClassId (若未 INCLUDE 則需 Key Lookup)
SELECT TOP 10 Id, ArchiveId, ClassId FROM ClassifyResult WHERE ArchiveId = 107347;

實測第二查詢 無 Key Lookup,證實 ClassId 已被自動加為 INCLUDE 欄位。

對齊的意義

  • 支援 SWITCH PARTITION 快速資料移動/歸檔。
  • 索引維護 (重建/重組) 可針對單一分區執行。
  • 查詢裁剪:優化器僅掃描相關分區。

執行計畫無 Key Lookup

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved