Синтаксис секционирования PostgreSQL ДЛЯ ЗНАЧЕНИЙ - PullRequest
1 голос
/ 30 апреля 2019

Я работаю над секционированием таблиц в 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');

Я получаю syntax error at or near "(".

Возможно ли это?

P.S. Я попытался PARTITION BY LIST, но в этом случае я могу использовать только одно поле.

1 Ответ

0 голосов
/ 30 апреля 2019

Вы можете разделить их по списку так, как хотите, введя другой слой разделов:

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');

Но это скорее академическое упражнение, чем что-то полезное.

Все, что превышает несколько сотен разделов, не будет работать вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...