Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация функций MySQL / 4 сообщений из 4, страница 1 из 1
26.03.2016, 12:42
    #39201127
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация функций MySQL
Есть функция следующего вида:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE FUNCTION fn_test(IN_Condition tinyint)
  RETURNS tinyint
BEGIN
  IF IN_Condition THEN
    RETURN 1;
  ELSE
    SELECT COUNT(*) FROM very_big_table into @f;
    RETURN 0;
  END IF;
END


Запускаю с параметром 1, когда, казалось бы, функция ничего не должна делать. Возвращает 1, но время выполнения - более секунды. Но стоит закомментировать строку с SELECT COUNT - функция отрабатывает с тем же результатом молниеносно. Проделывал несколько раз, для чистоты эксперимента, чтобы избежать кэширования, специально перед каждым вызовом перезапускал MySQL. Результат одинаковый.

Это так задумано, или нужно подшаманить что-то с настройками MySQL?
Версия MySQL 5.1.53.
...
Рейтинг: 0 / 0
26.03.2016, 13:11
    #39201137
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация функций MySQL
почитайте про SELECT COUNT(*) отдельно, все будет понятно
...
Рейтинг: 0 / 0
26.03.2016, 13:45
    #39201144
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация функций MySQL
SELECT COUNT в данном случае - просто утрированный пример. В реальности в этой ветке производится модификация данных в совокупности с тяжелыми запросами. Смысл вопроса был в том, можно ли заставить MySQL игнорировать эту ветку, когда в ее выполнении нет необходимости?
...
Рейтинг: 0 / 0
26.03.2016, 16:53
    #39201190
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация функций MySQL
A-MaRSELECT COUNT в данном случае - просто утрированный пример. В реальности в этой ветке производится модификация данных в совокупности с тяжелыми запросами. Смысл вопроса был в том, можно ли заставить MySQL игнорировать эту ветку, когда в ее выполнении нет необходимости?


...да, что-то тут не то.
попробуйте переписать ИФ-ЕЛСЕ другими конструкциями:
напромер два отдельных ИФа...
или CASE....
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация функций MySQL / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]