摘要:INSERT INTO record_list (number, name, class, classno, grade) VALUES
本文将继续针对南大通用GBase 8c数据库四种分区类型分别阐述其功能、效果及常用使用场景。
2. 列表分区表
适用场景
列表分区非常适合以下场景:
数据具有明确的类别属性,如地区、部门、状态等需要按离散值快速查询和管理的场景数据分布不均匀但需要按特定值组织的场景语法格式
CREATE TABLE
partition_table_name
( [column_name data_type ]
[, ... ]
)
PARTITION BY LIST (partition_key)
(
PARTITION partition_name VALUES (list_values_clause)
[, ... ]
);
SQL示例
LIST 分区表不支持合并分区
drop table if exists record_list; create table record_list
(
number integer,
name varchar(20),
class varchar(20),
classno varchar(1),
grade integer
)
partition by list(classno)
(
partition class_01 values ('1'),
partition class_02 values ('2'),
partition class_03 values ('3'),
partition class_04 values ('4')
);
INSERT INTO record_list (number, name, class, classno, grade) VALUES
(1, 'Alice', 'Class A', 1, 55),
(2, 'Bob', 'Class B', 2, 35),
(3, 'Charlie', 'Class D', 4, 75),
(4, 'David', 'Class A', 1, 45),
(5, 'Eve', 'Class B', 2, 65),
(6, 'Frank', 'Class C', 3, 85),
(7, 'Grace', 'Class A', 1, 70),
(8, 'Hannah', 'Class D', 4, 80),
(9, 'Ivy', 'Class C', 3, 95),
(10, 'Jack', 'Class D', 4, 50),
(11, 'Kate', 'Class B', 2, 60),
(12, 'Leo', 'Class C', 3, 20),
(13, 'Mike', 'Class D', 4, 72),
(14, 'Nancy', 'Class B', 2, 82),
(15, 'Olivia', 'Class C', 3, 92),
(16, 'Peter', 'Class A', 1, 62),
(17, 'Queen', 'Class D', 4, 5),
(18, 'Ryan', 'Class C', 3, 100),
(19, 'Sara', 'Class A', 1, 79),
(20, 'Tom', 'Class B', 2, 89);
-- 查询数据
SELECT * FROM record_list ;
-- 查询分区为 指定的值所在的分区
SELECT * FROM record_list PARTITION FOR (3);
-- 查询分区为 class_01 的数据
SELECT * FROM record_list PARTITION (class_01);
-- 删除分区
alter table record_list drop partition class_02;
-- 新增分区
alter table record_list add partition class_05 values ('5');
-- 重命名分区:将 class_05 改成 class_06
ALTER TABLE record_list rename PARTITION class_05 to class_06;
-- 查看分区表信息
SELECT relname, boundaries::varchar FROM pg_partition p where p.parentid='record_list'::regclass order by 1;
来源:GBASE南大通用