Столкнулся с непонятной особенностью. Процедуру писал и отлаживал через IBExpert - там всё нормально - выполняется менее секунды (возвращает 700-800 записей). Делаю вызов из приложения и ждать уже секунд 3-5, а то и больше приходится. С чем это может быть связано?
Вызов процедуры в приложении: select * from my_proc(:param1, :param2, .... ,paramN)
Сервер: FB 2.0.3
Доступ через FIBPlus
Разная скорость выполнения процедуры
Модератор: kdv
Как оказалось, тормоза были по двум причинам:
a) FetchAll (спасибо kdv за подсказку - в SQL Editor'е как-то забыл вызов процедуры проверить, сразу в приложении его писал)
б) процедура возвращает неупорядоченный набор, соответственно в вызове используется order by, который тоже свой вклад вносит
А насчёт отладки, я конечно неправильно выразился. Не отладка, а статистика выполнения процедуры показывает результат 500-700мс, всё остальное получается жрут вышеупомянутые FetchAll и order by
a) FetchAll (спасибо kdv за подсказку - в SQL Editor'е как-то забыл вызов процедуры проверить, сразу в приложении его писал)
б) процедура возвращает неупорядоченный набор, соответственно в вызове используется order by, который тоже свой вклад вносит
А насчёт отладки, я конечно неправильно выразился. Не отладка, а статистика выполнения процедуры показывает результат 500-700мс, всё остальное получается жрут вышеупомянутые FetchAll и order by
Это что же за записи такие возвращает процедура, чтобы на сортировку восьми сотен этих записей и FetchAll понадобилось больше 3 секунд?
Смотри код процедуры. Скорее всего именно она работает медленно.
IBExpert в статистике показывает время выдачи первых строк, если не включен FetchAll.
P.S. Как оценивал влияние odrder by?
Смотри код процедуры. Скорее всего именно она работает медленно.
IBExpert в статистике показывает время выдачи первых строк, если не включен FetchAll.
P.S. Как оценивал влияние odrder by?