powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как выделить все значения not null в отдельную партицию?
7 сообщений из 7, страница 1 из 1
Как выделить все значения not null в отдельную партицию?
    #40006069
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимизирую базу для того чтобы разные приложения не мешали друг другу.
Обычно использую конструкции типа:
Код: sql
1.
2.
3.
4.
5.
ALTER TABLE bigtable MODIFY
  PARTITION BY LIST (appkey)
  ( PARTITION App1 VALUES ('123','234','345'),
    PARTITION Appall VALUES (DEFAULT)
   ) ONLINE



Сейчас нужно вытащить в отдельную пратицию все записи у которых "appkey is not null".
Как это сделать? в принципе можно наверно через диапазоны ..... но appkey это по сути преобразованный в NUMBER UID.... по этому хотелось бы именно отобрать в партицию все "appkey is not null".
...
Рейтинг: 0 / 0
Как выделить все значения not null в отдельную партицию?
    #40006072
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD,

Добавить виртуальную колонку по nvl2 и резать по ней.
...
Рейтинг: 0 / 0
Как выделить все значения not null в отдельную партицию?
    #40006084
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,вариант тоже думал добавить поле и его тригером или как то еще заполнять, но не хочется трогать логику ее потом UATить придется это долго и затратно. Хотелось бы чисто административными средствами БД....
...
Рейтинг: 0 / 0
Как выделить все значения not null в отдельную партицию?
    #40006090
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> create table dropme_t (some number, awesome number(1) generated always as (nvl2(some,1,0)));

Table created.

SQL> insert into dropme_t(some) values(100);

1 row created.

SQL> insert into dropme_t(some) values(null);

1 row created.

SQL> select * from dropme_t;

      SOME    AWESOME
---------- ----------
       100          1
                    0
SQL> alter table dropme_t modify partition by list (awesome) (partition p1 values (1), partition p2 values(0));

Table altered.
...
Рейтинг: 0 / 0
Как выделить все значения not null в отдельную партицию?
    #40006160
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LIST-partition же позволяет указывать NULL как значение непосредственно
Т.е. две секции NULL и DEFAULT
...
Рейтинг: 0 / 0
Как выделить все значения not null в отдельную партицию?
    #40006264
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТС,

Похоже что предложение от Вячеслава отвечает вашим требованиям.

Если это так, не затруднит ли вас запостить решение в коде?
...
Рейтинг: 0 / 0
Как выделить все значения not null в отдельную партицию?
    #40008575
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров
LIST-partition же позволяет указывать NULL как значение непосредственно
Т.е. две секции NULL и DEFAULT


Спасибо, ступил. NULL=NULL это всегда false глаза отвело.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как выделить все значения not null в отдельную партицию?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]