PostgreSQL 分区语法 FOR VALUES

标签 postgresql syntax partitioning

我正在研究 PostgreSQL 中的表分区。

我为我的主表创建了一个分区:

CREATE TABLE head_partition_table PARTITION OF master_table 
FOR VALUES FROM (DATE_START) TO (DATE_END)
PARTITION BY RANGE (ENTITY_ID, GROUP_NAME);

之后,我想把head_partition_table分成更小的分区,所以我写了代码:

CREATE TABLE subpartition_table OF head_partititon_table 
FOR VALUES FROM ('0', 'A') TO ('0', 'Z');

我找不到如何指定单个值而不是范围的方法。

有点像

CREATE TABLE subpartition_table OF head_partititon_table 
FOR VALUES ('0', 'A');
CREATE TABLE subpartition_table OF head_partititon_table 
FOR VALUES  ('0', 'Z');

我在“(”或“(”附近出现语法错误

这可能吗?

附言我试过 PARTITION BY LIST,但在那种情况下,我只能使用一个字段。

最佳答案

你可以通过引入另一层分区来按你想要的列表对它们进行分区:

CREATE TABLE head_partition_table PARTITION OF master_table 
   FOR VALUES FROM ('2019-01-01') TO ('2020-01-01')
   PARTITION BY LIST (entity_id);

CREATE TABLE subpartition1 PARTITION OF head_partition_table
   FOR VALUES IN ('0')
   PARTITION BY LIST (group_name);

CREATE TABLE subsubpartition1 PARTITION OF subpartition1
   FOR VALUES IN ('A');

但这与其说是有用的东西,不如说是一种学术练习。

任何超过最多几百个分区的东西都不会表现良好。

关于PostgreSQL 分区语法 FOR VALUES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55922778/

相关文章:

assembly - 不同体系结构的汇编语言语法是否相同

sorting - Hadoop 对值进行二次排序。对松散的值(value)观进行分类

ASP.NET MVC 3 Razor 语法问题

java - Java 中递归快速排序的分区实现不起作用

apache-spark - Spark : save DataFrame partitioned by "virtual" column

postgresql - docker-compose 与 keycloak 和 postgres

java - OSX 上的 DBeaver - 返回空连接

c# - PostgreSQL:42883 运算符不存在:没有时区的时间戳 = 文本

postgresql - 如何使用动态 SQL 设置复合变量字段的值

c - C语言中的结构体