KEY 分區特性
- 類似 HASH 分區,但由 MySQL 內部哈希函數計算,不支援自定義運算式。
- 支援一或多欄位,欄位型別不限(HASH 僅支援整數運算式)。
- 分區鍵可為非主鍵/唯一鍵欄位。
建表示例
CREATE TABLE t_key (
id INT NOT NULL,
name VARCHAR(20),
created_at DATETIME
) ENGINE=InnoDB
PARTITION BY KEY(created_at)
PARTITIONS 4;
驗證分區分佈
INSERT INTO t_key VALUES
(1, 'a', '2023-01-01'),
(2, 'b', '2023-02-15'),
(3, 'c', '2023-03-20'),
(4, 'd', '2023-04-10');
SELECT TABLE_NAME, PARTITION_NAME, TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 't_key';
適用場景
- 分區鍵為非整數型別(日期、字串)。
- 不想手動維護 HASH 運算式。
- 需平均分佈資料,且無明確範圍/列表邏輯。
注意事項
- MySQL 5.1+ 支援,5.7+ 效能優化顯著。
- 分區數建議為 2 的冪次(2, 4, 8, 16),利於哈希均勻。
- 查詢需帶分區鍵條件才能觸發 Partition Pruning。