NULL в столбце, используемом для разделения диапазона в Postgres

#postgresql #partitioning

#postgresql #разбиение

Вопрос:

У меня есть таблица, разделенная по диапазону в Postgres 10.6. Есть ли способ указать одному из его разделов принять NULL для столбца, используемого в качестве ключа раздела?

Причина, по которой мне это нужно: размер моей таблицы составляет 200 ГБ, и на самом деле она еще не разделена. Я хочу разделить его в будущем, поэтому я подумал, что создам начальный раздел, включающий все текущие строки, а затем в начале каждого месяца я бы создавал другой раздел для данных за этот месяц.

Проблема в том, что в настоящее время в этой таблице нет столбца, который я буду использовать для разбиения, поэтому я хочу добавить столбец (изначально null ), а затем указать этому исходному разделу, чтобы он содержал все строки, которые имеют null в ключе разбиения.

Другим вариантом было бы не добавлять столбец как null , а установить начальное значение даты, но это потребовало бы много времени и места из-за размера этой таблицы.

Комментарии:

1. Спасибо @a_horse_with_no_name, я видел это для разделения списка, но я не видел ничего такого явного для разделов диапазона.

Ответ №1:

Я бы обновился до версии 11 и изначально определил разделенную таблицу только с разделом по умолчанию, который содержит все значения NULL.

Затем вы можете добавить другие разделы и постепенно перемещать данные, обновляя значения NULL.