Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Курсоры в ХП.  [new]
riman
Member

Откуда:
Сообщений: 2234
Имеем ХП, обявленную вот так:

Create Proc(....)
p1: begin
DECLARE C1 CURSOR WITH RETURN FOR
sql_stmt1;

DECLARE C2 CURSOR WITH RETURN FOR
sql_stmt2;

...
etc
...

CASE WhichCrsr
when 'C1'
THEN OPEN C1;
WHEN 'C2'
THEN OPEN C2;
...
etc
...
END CASE;
end p1


Что происходит при вызове процедуры? DB2 сразу переходит к CASE - циклу или как? Проблема в том, что при вызове процедуры, проходит много времени, прежде чем получаешь результат. Те же самые запросы, реализованные в сервлете - отрабатывают почти мгновенно. Почему?
19 апр 04, 13:14    [635781]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
NewYear
Member

Откуда: Большой адронный коллайдер
Сообщений: 2203
DECLARE C2 CURSOR WITH RETURN не содержит выполнимых операторов.
OPEN может выполняться долго.
19 апр 04, 14:32    [635989]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
riman
Member

Откуда:
Сообщений: 2234
Ничего не понял... Как это не содержит выполнимых операторов?
У меня этих курсоров в процедуре куча. Открываются эти курсоры в CASE - цикле. Все курсоры - это результаты некоторых выборок.
Или ты имеешь ввиду что Open cursor выполняется долго?
19 апр 04, 14:38    [636016]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
NewYear
Member

Откуда: Большой адронный коллайдер
Сообщений: 2203
да
19 апр 04, 14:51    [636063]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
а если написать в декларации курсора OPTIMIZE FOR N ROWS?
Полагаю при открытии курсора строится результирующая таблица,
и если она большая - и нет нужных индексов - то действительно - очень долго
будет открываться.
А с OPTIMIZE FOR 50 ROWS - да еще и по индексу - мгновенно...
19 апр 04, 15:07    [636112]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
riman
Member

Откуда:
Сообщений: 2234
Понятно. Следовательно ХП лучше использовать для изменения информации в БД, а не для её получения?
19 апр 04, 15:08    [636117]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Почему же? Меня такой подход (с курсорами) вполне устраивает...
Просто все зависит от того как база спроектирована...
В какой момент получаются отчеты.
Хочешь тестовое приложение пришлю с исходниками, посмотреть как примерно я это делаю?
19 апр 04, 15:30    [636193]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
riman
Member

Откуда:
Сообщений: 2234
2 gardenman.
Индексы есть (кстати надо будет их снова просмотреть, мож получше можно создать). Optimize не пойдет, хоть и резултсет действительно большой, но он нужен весь. Да и дело здесь не в индексах, потому что селекты полностью идентичны, только в одном случае их посылает сервлет, в другом - это ХП.
Насчет второго, если не трудно, то конечно. Вот моё мыло: riman@mail15.com
19 апр 04, 15:43    [636231]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
тут есть некоторая разница когда пишешь OPTIMIZE FOR и FETCH FIRST N ROWS
при OPTIMIZE FOR - вернутся все записи в запросе, просто результирующая таблица будет достраиваться в процессе запроса...
Конечно если запрос силно навороченный такая фишка не пройдет.

Выслал.
19 апр 04, 17:16    [636524]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
riman
Member

Откуда:
Сообщений: 2234
Нет, optimize точно не подойдет, уже пробовал - работает ещё медленнее чем без него. Придется писать сервлет.

Письмо что - то ещё не пришло. Большое что ли?
Спасибо.
19 апр 04, 17:31    [636554]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
golsa
Member

Откуда: Красноярск
Сообщений: 789
Ты похоже еще и динамически строишь select - если есть возможность перейди на статику
20 апр 04, 08:28    [637076]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
riman
Member

Откуда:
Сообщений: 2234
Да, есть и динамические селекты. Отказаться от них нельзя. Только я не понял - как это вы вычислили?
20 апр 04, 16:23    [638490]     Ответить | Цитировать Сообщить модератору
 Re: Курсоры в ХП.  [new]
riman
Member

Откуда:
Сообщений: 2234
Эээээ, на черт эти ХП. Тут её в сервлет на нативном JDBC написали - вообще летает. Всем спасибо.
20 апр 04, 17:09    [638690]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить