列表分割槽

列表分割槽在很多方面類似於範圍分割槽。與 RANGE 分割槽一樣,必須明確定義每個分割槽。兩種型別的分割槽之間的主要區別在於,在列表分割槽中,每個分割槽是根據一組值列表中的一個列值中的列值的成員資格來定義和選擇的,而不是在一組連續範圍之一中定義和選擇的。值。這是通過使用 PARTITION BY LIST(expr) 來完成的,其中 expr 是列值或基於列值的表示式並返回整數值,然後通過 VALUES IN (value_list) 定義每個分割槽,其中 value_list 是以逗號分隔的整數列表。

對於下面的示例,我們假設要分割槽的表的基本定義由此處顯示的 CREATE TABLE 語句提供:

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
);

假設在 4 個特許經營店中分佈有 20 個視訊商店,如下表所示。

區域 商店 ID 號碼
3,5,6,9,17
1,2,10,11,19,20
西方 4,12,13,14,18
中央 7,8,15,16

要以屬於同一區域的儲存的行儲存在同一分割槽中的方式對此表進行分割槽

ALTER TABLE employees PARTITION BY LIST(store_id) (
    PARTITION pNorth VALUES IN (3,5,6,9,17),
    PARTITION pEast VALUES IN (1,2,10,11,19,20),
    PARTITION pWest VALUES IN (4,12,13,14,18),
    PARTITION pCentral VALUES IN (7,8,15,16)
);

基於 MySQL 官方文件