Использование параметров в Stored Procedure

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
MirrorBoy
Сообщения: 3
Зарегистрирован: 09 апр 2005, 19:56

Использование параметров в Stored Procedure

Сообщение MirrorBoy » 09 апр 2005, 20:07

У меня есть хранимая процедура (ХП),использующая входной параметра.
В ней выполняется запрос, использующий этот параметр
Время выполнения запроса в чистом виде: 15 секунд
Время выполнения хранимой процедуры: 15 секунд
Создаю запрос, использующий мою ХП и сортирующий даные, полученные из нее
Время выполнения запроса: 15 секунд
Создаю новую ХП. В нее запихиваю этот запрос
Эта вторая ХП тоже использует входной параметр. Я его "сквозняком" передаю в вызов первой ХП
Время выполнения этой второй хранимой процедуры: 6 минут!!!!!!!
Если не использую входной параметр, а в вызов первой ХП подставляю "живое значение" то ХП2 выполняется 15 секунд
Напрашивающийся вывод: почему-то использование входного параметра при ВЛОЖЕННЫХ хранимых процедурах приводит к НЕИСПОЛЬЗОВАНИЮ индексов.
Может кто подскажет в чем может быть проблема?
Использую Windows 2000 и Interbase 5.5

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 09 апр 2005, 22:01

какие, блин, индексы. процедура это "черный" ящик. Если выборка идет из процедуры, то фактически на самом деле тебе показывается только часть данных. Полностью данные ты увидишь только при FetchAll.
Когда же ты первую процедуру вызываешь из второй, то тут опять же, ни о каких индексах не может быть и речи.

То есть, разница в количестве обрабатываемых (показываемых) данных. Производительность определяет только сам запрос (его можно проверить отдельно).

MirrorBoy
Сообщения: 3
Зарегистрирован: 09 апр 2005, 19:56

Сообщение MirrorBoy » 10 апр 2005, 14:01

kdv писал(а):какие, блин, индексы. процедура это "черный" ящик. Если выборка идет из процедуры, то фактически на самом деле тебе показывается только часть данных. Полностью данные ты увидишь только при FetchAll.
Все замеры времени я проводил с учетом FetchAll
kdv писал(а):То есть, разница в количестве обрабатываемых (показываемых) данных. Производительность определяет только сам запрос (его можно проверить отдельно).
Опять же, я проверял время выполнения запроса и по отдельности и в составе процедуры. Во всех случаях кроме как с использованием сквозной передачи параметров запрос работает БЫСТРО. С учетом FetchAll

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 10 апр 2005, 19:45

тогда пример давай. чудес не бывает.

MirrorBoy
Сообщения: 3
Зарегистрирован: 09 апр 2005, 19:56

Сообщение MirrorBoy » 11 апр 2005, 19:46

Проблема решилась полной переинсталляцией Interbase :shock:
Большое спасибо за помощь

Ответить