|
|
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Проблема вот в чем. Есть очень большая таблица. В пакете в нескольких select идет обращение только к нескольким записям из этой большой таблицы, всегда к одним и тем же. Може кто подскажет, как выбрать эти записи в самом начале пакета и потом обращаться постоянно к этой выборке, а не к изначальной таблице. Возможно это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:38 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
А данные этой выворки совсем не меняются, что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:40 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Да, во время выполнения пакета данные выборки не меняются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:41 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Опиши PL/SQL таблицу и заполни в секции инициалии. Обращайся к этой таблице ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:44 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Можно использовать массив записей и в разделе инициализации тела пакета заполнить его нужными записями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:46 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Если есть возможность корректировать запросы и вообще код программ, то можно много вариантов использовать, например сделать временную таблицу Oracle и обращаться к ней. Или сделать просто обычную таблицу (на время). Если обьём данных не велик - можно в память загнать в PL/SQL таблицу - в пакетах же переменные глобальные - в течении сеанса без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:47 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Мне нужно использовать эту выборку в From и Where. Разве это возможно с PL/SQL таблицами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:50 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:51 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
тогда сделай global temporary table или обычную таблицу - это самый простой вариант, которого я всегда пытаюсь избежать. Преимущество - минимум изменений в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:55 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Тогда поясните что не так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. На строке for f in (select dogovor, art from sostav s, tmpPrice t выдается ошибка: : (Error): ORA-06550: line 15, column 57: PLS-00201: identifier 'TMPPRICE' must be declared ORA-06550: line 15, column 15: PL/SQL: SQL Statement ignored ORA-06550: line 18, column 30: PLS-00364: loop index variable 'F' use is invalid ORA-06550: line 18, column 9: PL/SQL: Statement ignored ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 09:57 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
to Bagira: Я не говорил, что PL/SQL можно использовать непосредственно в запросе. Можно создать PL/SQL таблицу в пакете. Потом создать функцию, которая возвращает данные из этой таблицы. Использовать можно: select * from (TABLE( CAST(function_name() AS type_table)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:07 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Что-то я сегодня туго соображаю :( Что должно быть в функции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:12 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
Например type rec_type is record ( p1 number, p2 number ); type table_type is table of rec_type index; tab table_type; cursor c1 as select p1, p2 from <Твой селект для нужных данных> ..... раздел описаний В теле пакета begin cnt := 0; for x in c1 loop cnt := cnt + 1; tab.extend(); tab(cnt).p1 := x.p1; tab(cnt).p2 := x.p2; end loop; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:14 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
raven13, и как потом из tab данные использовать в select from? вопрос то в этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:28 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
если есть постоянный запрос к порции данных из очень большой таблицы, то можно применить несколько стратегий : 1. применить к этой таблице опцию partition. побочный эффект эта опция платная и ее применение автоматич. переводит базу в версию EE, и надо представлять стратегию разбиения на партиции 2. применять обьекты materialized view на commit в этой таблице, тогда в MV будет только нужная порция данных и основная таблица грузится не будет ограничения те же что в пункте 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:34 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
softbuilder, не могли бы Вы поподробнее рассказать про предложенный Вами вариант. Игры с администрированием БД в данном случае не подходят, а сделать очень нужно. Заранее большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:43 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
to Bagira: а версия Oracle какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:58 |
|
||
|
Как минимизировать количество обращений к талице?
|
|||
|---|---|---|---|
|
#18+
есть 8i, есть 9. работать должно и там и там ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32158278&tid=1990618]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 348ms |

| 0 / 0 |
