Задать вопрос
darkslesh
@darkslesh

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

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

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

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

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


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


Или я ошибаюсь насчёт последнего пункта?
  • Вопрос задан
  • 3121 просмотр
Подписаться 3 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
«Не надо серверу парсить сложный запрос, т.к. хранимые процедуры хранятся в уже откомпилированном виде с уже настроенной схемой выборки данных»…

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

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

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

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