云数据库 GAUSSDB(FOR MYSQL)-LIST DEFAULT HASH:创建LIST DEFAULT HASH分区表
创建LIST DEFAULT HASH分区表
- 语法
CREATE TABLE [ schema. ]table_name table_definition PARTITION BY LIST [COLUMNS] (expr) SUBPARTITION BY ... (list_partition_definition[, ..., list_partition_definition], default_partition_definition )
其中,default_partition_definition为:
PARTITION partition_name DEFAULT [PARTITIONS number]
每个分区的定义也可以包含二级分区, 二级分区也支持使用LIST DEFAULT分区,定义如下:
SUBPARTITION subpartition_name DEFAULT
表2 参数说明 参数名称
参数说明
table_name
要创建的表名称。
partition_name
- 只有一个DEFAULT分区时,表示分区名称。不可与其他分区表重复。
- 当有多个DEFAULT分区时,表示分区名称前缀。“partition_name+序号”表示分区名称。
subpartition_name
子分区名称。同一个表中不可重复,子分区最多只支持一个DEFAULT分区。
number
DEFAULT分区按照哈希规则分成number个分区,通过number指定分区个数。PARTITIONS number是可选项,不指定时,则默认为一个DEFAULT分区。
- 示例
CREATE TABLE list_default_tbl ( a INT, b INT ) PARTITION BY LIST (a) (PARTITION p0 VALUES IN (1,2,3,4,5), PARTITION p1 VALUES IN (6,7,8,9,10), PARTITION pd DEFAULT);
创建多个DEFAULT分区示例如下:
CREATE TABLE list_default_hash ( a INT, b INT ) PARTITION BY LIST (a) (PARTITION p0 VALUES IN (1,2,3,4,5), PARTITION p1 VALUES IN (6,7,8,9,10), PARTITION pd DEFAULT PARTITIONS 3);
使用LIST COLUMNS示例如下:
CREATE TABLE t_goods ( country VARCHAR(30), year VARCHAR(60), goods TEXT ) PARTITION BY LIST COLUMNS(country) ( PARTITION p1 VALUES IN ('China'), PARTITION p2 VALUES IN ('USA'), PARTITION p3 VALUES IN ('Asia'), PARTITION p3 VALUES IN ('India'), PARTITION p_deft DEFAULT PARTITIONS 5 );
通过explain查看分区:
EXPLAIN SELECT * FROM list_default_hash;
显示结果如下:
+----+-------------+-------------------+-------------------+------+---------------+------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------------------+-------------------+------+---------------+------+---------+------+------+----------+-------+ | 1 | SIMPLE | list_default_hash | p0,p1,pd0,pd1,pd2 | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | NULL | +----+-------------+-------------------+-------------------+------+---------------+------+---------+------+------+----------+-------+ 1 row in set (0.04 sec)
二级分区支持LIST DEFAULT类型,示例如下:
CREATE TABLE test (a int, b int) PARTITION BY RANGE(a) SUBPARTITION BY LIST(b) ( PARTITION part0 VALUES LESS THAN (10) ( SUBPARTITION sub0 VALUES IN (1,2,3,4,5), SUBPARTITION sub1 DEFAULT), PARTITION part1 VALUES LESS THAN (20) ( SUBPARTITION sub2 VALUES IN (1,2,3,4,5), SUBPARTITION sub3 DEFAULT), PARTITION part2 VALUES LESS THAN (30) ( SUBPARTITION sub4 VALUES IN (1,2,3,4,5), SUBPARTITION sub5 DEFAULT));
一级分区存在多个LIST DEFAULT HASH分区的情况下,仅支持HASH或KEY二级分区:
CREATE TABLE list_default_hash_sub ( a INT, b INT ) PARTITION BY LIST (a) SUBPARTITION BY HASH (b) SUBPARTITIONS 20 (PARTITION p0 VALUES IN (1,2,3,4,5), PARTITION p1 VALUES IN (6,7,8,9,10), PARTITION pd DEFAULT PARTITIONS 3);
- GaussDB(for MySQL)并行查询_GaussDB(for MySQL)内核_GaussDB(for MySQL)并行执行_PQ
- GaussDB索引_GaussDB数据库索引_高斯数据库索引_华为云
- GaussDB索引_华为数据库GaussDB_高斯数据库索引_华为云
- GaussDB如何建主键_数据库索引设计规范_高斯数据库如何建主键-华为云
- 云数据库Gaussdb数据库索引_华为gaussdb__gaussdb 数据库
- GaussDB Core_gaussdb内核_高斯数据库Core_华为云
- Gauss(DWS)数据加解密_数据加解密算法_数据加解密函数
- GaussDB查看表大小_GaussDB查询表空间_高斯数据库查看表大小-华为云
- 云数据库GaussDB(for MySQL)_兼容MySQL
- MySQL数据库_查看MySQL数据库版本_免费MySQL数据库