Я хотел бы перейти от Range Partition к Range-Interval, но моя текущая таблица имеет раздел на MAXVALUE
и столбец, используемый для разделения позволяет нулевые значения :(От Range Partition к Range-Interval
Например: Say мы имеем:
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))
, но я боюсь, что придется перерабатывать всю таблицу (возможно, в реальной таблице много данных).
Любая идея?
Это не совсем так. так как по крайней мере 11g вы можете создать виртуальный столбец (который является просто выражением) и использовать его для разделения ... – ShoeLace
@ShoeLace Спасибо, я этого не знал! –