相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 42.0 mb
PDF (A4)- 42.1 mb
手册页(TGZ)- 267.5 kb
手册页(邮政编码)- 377.1 kb
信息(Gzip)- 4.1 mb
信息(邮政编码)- 4.1 mb
本手册节选

24.2.3.2 LIST列分区

MySQL 8.0提供支持名单列分区。这是一种变体列表允许使用多个列作为分区键的分区,并允许使用非整数类型的数据类型列作为分区列;你可以使用字符串类型,日期,DATETIME列。有关允许的数据类型的详细信息分区列,看到第24.2.3节,“列分区”)。

假设你有一个在12个城市拥有客户的企业,出于销售和营销的目的,你将其组织成4个区域,每个区域3个城市,如下表所示:

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

名单列分区时,您可以为客户数据创建一个表,根据客户所在城市的名称将一行分配给对应于这些区域的4个分区中的任意一个,如下所示:

CREATE TABLE customers_1 (first_name VARCHAR(25), last_name VARCHAR(25), street_1 VARCHAR(30), street_2 VARCHAR(30), city VARCHAR(15),更新日期)PARTITION BY LIST COLUMNS(city) (PARTITION pRegion_1 VALUES IN('Oskarshamn', 'Högsby', 'Mönsterås'), PARTITION pRegion_2 VALUES IN('Vimmerby', 'Hultsfred', 'Västervik'), PARTITION pRegion_3 VALUES IN('Nässjö', 'Eksjö', 'Vetlanda'), PARTITION pRegion_4 VALUES IN('Uppvidinge', 'Alvesta', 'Växjo'));

就像用范围列,则不需要使用表达式列()子句将列值转换为整数。(事实上,不允许使用列名以外的表达式列())。

它也可以使用日期而且DATETIME列,如下示例所示,该示例使用与类相同的名称和列customers_1表所示,但采用名单列的分区更新列将行存储在4个分区中的一个,这取决于2010年2月客户的帐户计划更新的星期:

CREATE TABLE customers_2 (first_name VARCHAR(25), last_name VARCHAR(25), street_1 VARCHAR(30), street_2 VARCHAR(30), street_2 VARCHAR(30), city VARCHAR(15), renewal DATE) PARTITION BY LIST COLUMNS(renewal) (PARTITION pWeek_1 VALUES IN('2010-02-01', '2010-02-02', '2010-02-03', '2010-02-04', '2010-02-05', '2010-02-06', '2010-02-07'), PARTITION pWeek_2 VALUES IN('2010-02-08', '2010-02-09', '2010-02-10', '2010-02-11', '2010-02-12', '2010-02-13', '2010-02-14'), PARTITION pWeek_3 VALUES IN('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”));

这是可行的,但是如果涉及的日期数量变得非常大,那么定义和维护就会变得非常麻烦;在这种情况下,通常采用更实际的方法范围范围列分区。在本例中,因为我们希望用作分区键的列是a日期列中,我们使用范围列分区,如下所示:

CREATE TABLE customers_3 (first_name VARCHAR(25), last_name VARCHAR(25), street_1 VARCHAR(30), street_2 VARCHAR(30), city VARCHAR(15), renew DATE) PARTITION BY RANGE COLUMNS(renew) (PARTITION pWeek_1 VALUES小于('2010-02-09'),PARTITION pWeek_2 VALUES小于('2010-02-15'),PARTITION pWeek_3 VALUES小于('2010-02-22'),PARTITION pWeek_4 VALUES小于('2010-03-01'));

看到第24.2.3.1节,“RANGE COLUMNS分区”,以查询更多资料。

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

看到第13.1.20节," CREATE TABLE语句",以获取有关按列表列进行分区()语法。