mysql range list_MySQL数据库分区 list分区(三)

MySQL中的LIST分区在很多方面类似于RANGE分区。和按照RANGE分区一样,每个分区必须明确定义。它们的主要区别在于,LIST分区中每个分区的定义和选择是基于某列的值从属于一个值列表集中的一个值,而RANGE分区是从属于一个连续区间值的集合。LIST分区通过使用“PARTITION BY LIST(expr)”来实现,其中“expr” 是某列值或一个基于某个列值、并返回一个整数值的表达式,然后通过“VALUES IN (value_list)”的方式来定义每个分区,其中“value_list”是一个通过逗号分隔的整数列表。

注释:在MySQL 5.1中,当使用LIST分区时,有可能只能匹配整数列表。

不像按照RANGE定义分区的情形,LIST分区不必声明任何特定的顺序。 如:红旗超市在全国的连锁店数据表。我们按东部(1,2,3,4)、西部(5,6,7,8)、中部(10,11,12,13)进行分区。create table supermarket (

id int not null,

xzqhId int not null, -- 行政区划ID

sort int -- 序号

)

partition by list (xzqhId)(

partition pEast values in (1,2,3,4),

partition pWest values in (5,6,8,7),

partition pCenter values in (11,13,12,10)

);

要点:

如果试图插入列值(或分区表达式的返回值)不在分区值列表中的一行时,那么“INSERT”查询将失败并报错。例如,假定LIST分区的采用上面的方案,下面的查询将失败:INSERT INTO values(id, xzqhId, sort)supermarket(20, 14, 20);

这是因为“xzqhId”列值14不能在用于定义分区pEast, pWest,或pCenter的值列表中找到。要重点注意的是,LIST分区没有类似如“VALUES LESS THAN MAXVALUE”这样的包含其他值在内的定义。将要匹配的任何值都必须在值列表中找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值