|
|
|
Движки SQL и PL
|
|||
|---|---|---|---|
|
#18+
[quot мегамозг]Подскажите, в коде из статьи Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. данные засовываются в какую-то коллекцию типа id_list. Что это за тип должен быть, вложенная таблица или что-то иное? Код: plsql 1. 2. 3. это подтверждает. То есть за ранее создали пакет и объявили типы для наиболее часто встречающихся массивов: даты, id и т.п. Вот рекомендация из книги Стивена Фейерштейна и Билла Прибыл: Вместо того чтобы создавать набор определений TYPE коллекций, различающихся только по имени и разбросанных по всему приложению, стоит рассмотреть возможность создания одного пакета с набором заранее определенных, стандартных типов коллекций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:45 |
|
||
|
Движки SQL и PL
|
|||
|---|---|---|---|
|
#18+
Banks Analytics Вот рекомендация из книги Стивена Фейерштейна и Билла Прибыл: Вместо того чтобы создавать набор определений TYPE коллекций, различающихся только по имени и разбросанных по всему приложению, стоит рассмотреть возможность создания одного пакета с набором заранее определенных, стандартных типов коллекций. вместо того чтоб каждый создавал пакет, стоит создать стандартные типы коллекций на уровне оракля ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:59 |
|
||
|
Движки SQL и PL
|
|||
|---|---|---|---|
|
#18+
Vintмегамозг, через pipelined функцию использовать pl\sql пакеты можно. там создадутся sql типы автоматически (до версии 12с). в 12с может быть и так можно. не знаю - не проверял. Я в курсе, ч-з конвейрную ф-ю и сделал. Теоретический интерес - как с обычными табличными функциями дела делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:36 |
|
||
|
Движки SQL и PL
|
|||
|---|---|---|---|
|
#18+
мегамозгVintмегамозг, через pipelined функцию использовать pl\sql пакеты можно. там создадутся sql типы автоматически (до версии 12с). в 12с может быть и так можно. не знаю - не проверял. Я в курсе, ч-з конвейрную ф-ю и сделал. Теоретический интерес - как с обычными табличными функциями дела делать. создавать sql тип (или пользовать существующие) ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:39 |
|
||
|
Движки SQL и PL
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopИтак, пути загрузки 1) insert all, но надо позаботиться о de-duplication для всех измерений. Для этого можно для каждого из измерений поддерживать ассоциативный массив ключей и делать вставку для измерения, только если ключа в массиве еще нет. 2) insert all + row_number для каждого из измерений. Требует N аналитических сортировок. Вставка в соответствующее измерение если rn = 1 для него. 3) insert into fact + N insert distinct into dimension. Трубует N сканирований исходной широкой таблицы и N hash/sort для distinct. 4) unpivot так чтобы для фактов и всех измерений была отдельная одна строка + distinct. 1а) буфер в PL/SQL с заполнением из курсора bulk collect limit на ~1000-10000 строк + N ассоциативных массивов ключей. Вставка буфера forall, измерения - по тексту. Позволяет минимизировать переключения контекста. 1б) Если система позволяет жесткий parallel - тут, кмк, можно рассмотреть вариант insert из pipelined parallel enabled, внутри которой автономками заполнять измерения на базе тех же ассоциативных массивов, но надо аккуратно подойти к вопросу дублей в измерениях - инстансы parallel pipelined, разумеется, друг друга не видят. Плюс важно не свалиться в temp, поскольку выход pipelined будет буферизоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:30 |
|
||
|
|

start [/forum/topic.php?fid=52&startmsg=39467038&tid=1885800]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 451ms |

| 0 / 0 |
