ITPub博客

首页 > 数据库 > 国内数据库 > 南大通用GBase 8c 数据库分区表实践探秘(三)

南大通用GBase 8c 数据库分区表实践探秘(三)

原创 国内数据库 作者:GBASE南大通用 时间:2025-09-11 10:55:51 0 删除 编辑


本文将继续针对南大通用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;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3095439/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1316
  • 访问量
    1295673