LIST分區根據數據的枚舉值進行分區。
以下示例為北京、天津、內蒙、河北的所有客戶存儲在一個分區中,其他省市的客戶存儲在不同的分區中。按區域分析賬戶的管理人員可以利用分區剪枝。
區域 | 編號 |
華北(p_cn_north) | 1:BJ,2:TJ,3:HB,4:NM |
華南(p_cn_south) | 5:GD, 6:GX, 7:HN |
華東(p_cn_east) | 8:SH, 9:ZJ, 10:JS |
創建具有LIST分區的表:
CREATE TABLE `accounts` (
`id` int(11) DEFAULT NULL,
`account_number` int(11) DEFAULT NULL,
`customer_id` int(11) DEFAULT NULL,
`branch_id` int(11) DEFAULT NULL,
`region_id` int(11) DEFAULT NULL,
`region` varchar(5) DEFAULT NULL,
`status` varchar(1) DEFAULT NULL
) ENGINE=InnoDB
PARTITION BY LIST (`region_id`)
(PARTITION p_cn_north VALUES IN (1,2,3,4),
PARTITION p_cn_south VALUES IN (5,6,7),
PARTITION p_cn_east VALUES IN (8,9,10)
);
LIST COLUMNS分區是LIST分區的擴展,它允許使用多個列作為分區鍵,并允許使用非整數類型的數據類型列作為分區列,您可以使用字符串類型、DATE和DATETIME列。與使用RANGE COLUMNS進行分區一樣,不需要在COLUMNS()子句中使用表達式將列值轉換為整數。事實上,在COLUMNS()中不允許使用列名以外的表達式。
創建具有LIST COLUMNS分區的表:
DROP TABLE IF EXISTS accounts;
CREATE TABLE accounts
( id INT,
account_number INT,
customer_id INT,
branch_id INT,
region_id INT,
region VARCHAR(5),
status VARCHAR(1)
)
PARTITION BY LIST COLUMNS(region)
(PARTITION p_cn_north VALUES IN ('BJ','TJ','HB','NMG'),
PARTITION p_cn_south VALUES IN ('GD','GX','HN'),
PARTITION p_cn_east VALUES IN ('SH','ZJ','JS')
);
文檔內容是否對您有幫助?