darkslesh
@darkslesh

MySQL Хранимые процедуры и лимиты?

Столкнулся с небольшой проблемой: Есть хранимая процедура состоящая из SELECT.

Необходимо получать данные только в определенных диапазонах (заранее неизвестно).

Но проблема в том, что LIMIT в хранимой процедуре не принимает переменные в виде своих параметров.

Что можно использовать взамен этого? Или как решить данную проблему, желательно без потери производительности.


И второй вопрос: Странное поведение хранимых процедур (со статическими SQL командами). Если делать обычный SELECT запрос, то он выполняется за 0.000013 секунды, а если делать тот же самый запрос, но обернутый в хранимую процедуру, то время выполнения равно 0.000510. т.е. дикая потеря производительности, хотя по факту должно быть наоборот, потому что:
  • Меньше передаётся данных
  • Не надо серверу парсить сложный запрос, т.к. хранимые процедуры хранятся в уже откомпилированном виде с уже настроенной схемой выборки данных.


Или я ошибаюсь насчёт последнего пункта?
  • Вопрос задан
  • 3120 просмотров
Пригласить эксперта
Ответы на вопрос 1
«Не надо серверу парсить сложный запрос, т.к. хранимые процедуры хранятся в уже откомпилированном виде с уже настроенной схемой выборки данных»…

Все процедуры это програмка, которая переключает контекст. Простой сквл запрос = это работает SQL, там есть парсер, потом оптимализатор итд…
В процедурках не всё так просто, там надо вам (хоть и скомпилированную процедурку) вызвать, в ней всё равно находится SQL, который надо обработать и наконец-то куда-то отправить куда-то что вернул SELECT.

Кароче тормоза в переключении контекста между SQL и PL. Для простых вещей используйте просто SQL.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы