|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
Имеем ХП, обявленную вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Что происходит при вызове процедуры? DB2 сразу переходит к CASE - циклу или как? Проблема в том, что при вызове процедуры, проходит много времени, прежде чем получаешь результат. Те же самые запросы, реализованные в сервлете - отрабатывают почти мгновенно. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 13:14 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
DECLARE C2 CURSOR WITH RETURN не содержит выполнимых операторов. OPEN может выполняться долго. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 14:32 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
Ничего не понял... Как это не содержит выполнимых операторов? У меня этих курсоров в процедуре куча. Открываются эти курсоры в CASE - цикле. Все курсоры - это результаты некоторых выборок. Или ты имеешь ввиду что Open cursor выполняется долго? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 14:38 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
а если написать в декларации курсора OPTIMIZE FOR N ROWS? Полагаю при открытии курсора строится результирующая таблица, и если она большая - и нет нужных индексов - то действительно - очень долго будет открываться. А с OPTIMIZE FOR 50 ROWS - да еще и по индексу - мгновенно... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 15:07 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
Понятно. Следовательно ХП лучше использовать для изменения информации в БД, а не для её получения? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 15:08 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
Почему же? Меня такой подход (с курсорами) вполне устраивает... Просто все зависит от того как база спроектирована... В какой момент получаются отчеты. Хочешь тестовое приложение пришлю с исходниками, посмотреть как примерно я это делаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 15:30 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
2 gardenman. Индексы есть (кстати надо будет их снова просмотреть, мож получше можно создать). Optimize не пойдет, хоть и резултсет действительно большой, но он нужен весь. Да и дело здесь не в индексах, потому что селекты полностью идентичны, только в одном случае их посылает сервлет, в другом - это ХП. Насчет второго, если не трудно, то конечно. Вот моё мыло: riman@mail15.com ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 15:43 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
тут есть некоторая разница когда пишешь OPTIMIZE FOR и FETCH FIRST N ROWS при OPTIMIZE FOR - вернутся все записи в запросе, просто результирующая таблица будет достраиваться в процессе запроса... Конечно если запрос силно навороченный такая фишка не пройдет. Выслал. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 17:16 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
Нет, optimize точно не подойдет, уже пробовал - работает ещё медленнее чем без него. Придется писать сервлет. Письмо что - то ещё не пришло. Большое что ли? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2004, 17:31 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
Ты похоже еще и динамически строишь select - если есть возможность перейди на статику ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 08:28 |
|
Курсоры в ХП.
|
|||
---|---|---|---|
#18+
Да, есть и динамические селекты. Отказаться от них нельзя. Только я не понял - как это вы вычислили? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2004, 16:23 |
|
|
start [/forum/topic.php?fid=43&fpage=156&tid=1606302]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 296ms |
total: | 438ms |
0 / 0 |