| 類型 | 適用場景 | 分區鍵要求 |
| RANGE | 日期/數值範圍(如按年分區) | 整數/日期函數結果 |
| LIST | 離散值列舉(如地區代碼) | 整數/字串值列表 |
| HASH | 均勻分佈、負載平衡 | 整數運算式 |
| KEY | 類似 HASH,支援非整數列 | 任意列,內部哈希 |
關鍵限制:分區鍵必須包含在唯一索引中
-- 錯誤:分區鍵 col3 不在唯一索引 (col1,col2) 中
CREATE TABLE t(
col1 INT, col2 INT, col3 INT, col4 INT,
UNIQUE KEY (col1,col2)
) PARTITION BY HASH(col3) PARTITIONS 4;
-- ERROR 1503: A PRIMARY KEY must include all columns in the table's partitioning function
-- 正確:分區鍵 col2 在唯一索引中
CREATE TABLE t(
col1 INT, col2 INT, col3 INT, col4 INT,
UNIQUE KEY (col1,col2)
) PARTITION BY HASH(col2) PARTITIONS 4;
-- Query OK
檢查分區功能
SHOW VARIABLES LIKE '%partition%';
-- have_partitioning = YES 表示支援
- 上一篇文章: MySQL 獲取插入 ID:LAST_INSERT_ID() 線程安全機制與 MAX(id) 陷阱對比
- 下一篇文章: MySQL RANGE 分區實戰:按年份分區銷售表、分區修剪優化與邊界陷阱
Copyright ©
程式碼之家 All Rights Reserved