3.3.2列列表分区

MySQL 8.0提供了支持名单列分区。这是一个的变体列表分区,使多个列作为分区键的使用,和非整数数据类型的列类型用作分区列;您可以使用字符串类型,日期,DATETIME列。(关于允许的数据类型的更多信息分区列,看到3.3节,“列分区”)。

假设您有一个业务,客户在12个城市,为销售和市场营销的目的,你整理成4三地区的城市每个如下表所示:

地区 城市
1 奥斯卡,Hogsby蓬莱蕉
2 Vimmerby、Hultsfred Vastervik
3 Nassjo、Eksjo Vetlanda
4 Uppvidinge、Alvesta Vaxjo

名单列分区,您可以创建一个表为客户数据分配连续的4个分区对应于这些地区基于客户所在的城市的名称,如下所示:

创建表customers_1 (first_name VARCHAR (25)、last_name VARCHAR (25), street_1 VARCHAR (30), street_2 VARCHAR(30),城市VARCHAR(15),更新日期)分区通过列表列(市)(分区pRegion_1值(“奥斯卡”,“Hogsby”、“蓬莱蕉”),分区pRegion_2值(‘Vimmerby’,‘Hultsfred’,‘Vastervik’),分区pRegion_3值(‘Nassjo’,‘Eksjo’,‘Vetlanda’),分区pRegion_4值(‘Uppvidinge’,‘Alvesta’, ' Vaxjo '));

与分区的范围列,你不需要使用表达式列()条款将列值转换为整数。(事实上,表达式的使用除了列名是不允许的列())。

也可以使用日期DATETIME列,如以下示例所示,使用相同的名称和列customers_1表显示之前,但雇佣了名单列分区的基础上更新列4行存储在一个分区根据本周在2010年2月客户的账户计划更新:

创建表customers_2 (first_name VARCHAR (25)、last_name VARCHAR (25), street_1 VARCHAR (30), street_2 VARCHAR(30),城市VARCHAR(15),更新日期)分区通过列表列(更新)(分区pWeek_1值(“2010-02-01”,“2010-02-02”,“2010-02-03”,“2010-02-04”,“2010-02-05”,“2010-02-06”,“2010-02-07”),分区pWeek_2值(“2010-02-08”,“2010-02-09”,“2010-02-10”,“2010-02-11”,“2010-02-12”,“2010-02-13”,“2010-02-14”),分区pWeek_3值(“2010-02-15”,“2010-02-16”,“2010-02-17”,“2010-02-18”,“2010-02-19”,“2010-02-20”,“2010-02-21”),分区pWeek_4值(“2010-02-22”,“2010-02-23”,“2010-02-24”,“2010-02-25”,“2010-02-26”,“2010-02-27”,“2010-02-28”));

定义和维护这个作品,但就麻烦如果日期涉及到数量的增加非常大;在这种情况下,它通常是更实际的使用范围范围列分区。在这种情况下,因为我们希望使用分区键列日期列中,我们使用范围列分区,如下所示:

创建表customers_3 (first_name VARCHAR (25)、last_name VARCHAR (25), street_1 VARCHAR (30), street_2 VARCHAR(30),城市VARCHAR(15),更新日期)范围分区的列(更新)(分区pWeek_1值小于(“2010-02-09”),分区pWeek_2值小于(“2010-02-15”),分区pWeek_3值小于(“2010-02-22”),分区pWeek_4值小于(' 2010-03-01 '));

看到3.3.1节,“范围列分区”为更多的信息。

此外(如范围列分区),您可以使用多个列列()条款。

看到CREATE TABLE语句额外的信息分区通过列表列()语法。