分散式分區檢視表(Distributed Partitioned Views, DPV)將邏輯上單一大表的資料,依分區鍵(如 SaleID 範圍)水平切分儲存於多台伺服器的本地表中,再透過 UNION ALL 檢視表整合,實現查詢自動路由、插入/更新/刪除自動導向正確分區。
CHECK 條件約束確保資料只能進入正確分區CHECK 約束UNION ALL 所有分區表(含本地與遠端)-- 伺服器 A:SaleID 1~1000000
CREATE TABLE SalesHistory (
SaleID INT PRIMARY KEY,
SaleDate DATETIME,
Amount MONEY,
CHECK (SaleID BETWEEN 1 AND 1000000)
);
-- 伺服器 B:SaleID 1000001~2000000
CREATE TABLE SalesHistory (
SaleID INT PRIMARY KEY,
SaleDate DATETIME,
Amount MONEY,
CHECK (SaleID BETWEEN 1000001 AND 2000000)
);
-- 伺服器 A 執行
CREATE VIEW dbo.SalesHistory_DPV
AS
SELECT * FROM dbo.SalesHistory -- 本地分區
UNION ALL
SELECT * FROM ServerB.DB.dbo.SalesHistory; -- 遠端分區
-- 伺服器 B 執行(對稱)
CREATE VIEW dbo.SalesHistory_DPV
AS
SELECT * FROM ServerA.DB.dbo.SalesHistory -- 遠端分區
UNION ALL
SELECT * FROM dbo.SalesHistory; -- 本地分區
GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.SalesHistory_DPV TO AppUser;

WHERE SaleID = 500000 → 優化器讀取 CHECK 約束,僅存取伺服器 AWHERE SaleID BETWEEN 500000 AND 1500000 → 並行存取 A、B 兩台INSERT 新資料 → 依 SaleID 值自動導向正確伺服器執行| 優勢 | 說明 |
|---|---|
| 查詢自動分區消除 | 優化器根據 CHECK 約束跳過無關分區,大幅降低 IO |
| 寫入自動導向 | DML 操作根據分區鍵值自動路由到正確伺服器 |
| 應用層透明 | 應用只操作檢視表,不知底層分佈結構 |
| 線性擴展 | 新增伺服器只需加入新分區表與修改檢視表 UNION ALL |
現代架構建議優先評估:
Partitioned Table + Partitioned Index + 檔案群組分離