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

SQL Server 已分區索引特殊指導原則 (一):索引與基表對齊的三大實質條件

     編輯:關於SqlServer

對齊定義

索引與基表對齊,不需同名分區函數,但分區函數在實質上必須相同:資料類型相同、分區數相同、邊界值相同。

驗證實驗

  1. 建立兩組同樣定義的分區函數/方案:Fun_TestUnique_Id / Sch_TestUnique_Id 及 Fun_TestUnique_SiteId / Sch_TestUnique_SiteId (皆 INT、3 分區、邊界 10M/20M)。
  2. 建立表 TestUnique,叢集索引 PK(Id) ON Sch_TestUnique_Id(Id)。
  3. 建立唯一非叢集索引 UQ(SiteId, Url) ON Sch_TestUnique_SiteId(SiteId)。
  4. 驗證:兩分區函數滿足三條件 → 索引與基表 對齊成功,支援 SWITCH。

關鍵 DDL 腳本

-- 分區函數與方案 (兩組完全相同定義)
CREATE PARTITION FUNCTION Fun_TestUnique_Id(INT) AS RANGE RIGHT FOR VALUES (10000000, 20000000);
CREATE PARTITION SCHEME Sch_TestUnique_Id AS PARTITION Fun_TestUnique_Id TO (FG1, FG2, FG3);

CREATE PARTITION FUNCTION Fun_TestUnique_SiteId(INT) AS RANGE RIGHT FOR VALUES (10000000, 20000000);
CREATE PARTITION SCHEME Sch_TestUnique_SiteId AS PARTITION Fun_TestUnique_SiteId TO (FG1, FG2, FG3);

-- 表與索引
CREATE TABLE TestUnique (
    Id INT IDENTITY(600000000,1) NOT NULL,
    SiteId INT NULL, Url NVARCHAR(420) NULL,
    CONSTRAINT PK_TestUnique PRIMARY KEY CLUSTERED (Id) ON Sch_TestUnique_Id(Id)
) ON Sch_TestUnique_Id(Id);

CREATE UNIQUE NONCLUSTERED INDEX UQ_SiteId_Url ON TestUnique (SiteId, Url) ON Sch_TestUnique_SiteId(SiteId);

對齊帶來的能力

  • ALTER TABLE ... SWITCH PARTITION 快速載入/歸檔。
  • 分區級索引重建/重組 (REBUILD PARTITION = n)。
  • 查詢優化器分區裁剪。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved