Я хотел бы перейти от Range Partition к Range-Interval, но моя текущая таблица имеет раздел на MAXVALUE
, а столбец, используемый для разделения, допускает нулевые значения :(
Например: Допустим, у нас есть:
create table a (b number)
partition by range (b) (
PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN (50),
PARTITION p2 VALUES LESS THAN (MAXVALUE)
);
Затем заполняем:
INSERT INTO a(b) VALUES (1);
INSERT INTO a(b) VALUES (11);
INSERT INTO a(b) VALUES (51);
INSERT INTO a(b) VALUES (null);
Чтобы иметь возможность перейти к интервалу, нам нужно удалить раздел с MAXVALUE
, поэтому другие значения должны быть перемещены в новый раздел.
51 не проблема, я бы создал раздел с VALUES LESS than 100
, но как насчет NULL
один?
Я думал о том, чтобы перейти на что-то вроде разделения по диапазону (NVL(b,0))
, но меня пугает необходимость повторной обработки всей таблицы (это невозможно, в реальной таблице много данных).
Любая идея?