Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 секционирование по столбцу другой таблицы  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Здравствуйте.
Собственно вопрос: есть таблица, которую необходимо как-то секционировать, подходящего ключа для этого в ней нет. Зато он (дата создания) есть в другой таблице, которую с этой связывает foreign key (большая таблица ссылается на primary key той, в которой есть дата создания). Как это можно цивилизованно сделать? Есть четкое ощущение, что проблема типовая и где то это решение уже было, по крайней мере на этом форуме. Натолкните на мыслю плиз либо дайте ссылку - сам найни не могу пока
11 июн 08, 07:01    [5790790]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Версия Oracle - 9.2
11 июн 08, 07:04    [5790791]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Если как-то, то можно по хешу
Или денормализовать, а целостность поддерживать триггером
11 июн 08, 07:07    [5790793]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Вячеслав Любомудров
Если как-то, то можно по хешу
Или денормализовать, а целостность поддерживать триггером


В том то и дело что не как то - нужно партиционировать именно по времени, которое содержится в главной таблице (то есть удалять старые данные - "старость" которых определить по очищаемой таблице нельзя). Так что хеш не подходит - там данные распределяются случайно. Как вариант - подошло бы секционирование по функции, которая возвращает дату из другой таблицы :)) Если бы оно было

Другие варианты: 1) столбец DEFAULT SYSDATE (либо дубль столбца даты из главной: видимо этот вариант Вы и предлагаете кажется) в партиционируемой и бить по нему и 2) по диапазону на foreign key - мне не особенно нравятся по понятным причинам: 1) лишний столбец и денормализация; 2) некрасиво
11 июн 08, 07:18    [5790799]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
Brodiaga
Member

Откуда:
Сообщений: 501
Для этой задачи можно использовать Reference partitioning, только очень жаль что он появился только в 11g!
11 июн 08, 08:54    [5790942]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
hardsign
Member

Откуда: Оттуда... Как оттуда???
Сообщений: 137
если родительская таблица не очень большая, то можно сделать partition by list, а в качестве ключа -- foreign key. Текущая секция -- default, раз, например, в месяц делать split partition.

Однако это гораздо более кривое решение, чем денормализация :))
11 июн 08, 09:11    [5790987]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Brodiaga
Для этой задачи можно использовать Reference partitioning, только очень жаль что он появился только в 11g!


Вот то то и оно :) Я догадывался что такую вещь как минимум стоит изобрести. Просто не был уверен, что ее еще не изобрели
11 июн 08, 09:37    [5791106]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
hardsign
если родительская таблица не очень большая, то можно сделать partition by list, а в качестве ключа -- foreign key. Текущая секция -- default, раз, например, в месяц делать split partition.

Однако это гораздо более кривое решение, чем денормализация :))


Это решение тож не подходит (думал в эту сторону): родительская таблица будет непрерывно расти - хоть и не очень быстро
11 июн 08, 09:39    [5791112]     Ответить | Цитировать Сообщить модератору
 Re: секционирование по столбцу другой таблицы  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Итого: думаю есть смысл денормализировать. Тем более что данные актуальны примерно месяц - лишний столбец даты хоть и увеличит размер - но не думаю что принципиально: по сравнению с остальными - там еще десяток. Так и сделаем...

Большое спасибо за помощь
11 июн 08, 09:43    [5791122]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить