MySQL - Функция или часть запроса
Модератор: Модераторы
MySQL - Функция или часть запроса
Доброго времени суток. Задача вкратце такая. Сервер MySQL 8. Есть некий список клиентов. Каждый месяц у этого клиента может быть 0, 1 или несколько неких услуг. Нужно сделать отчет за 12 месяцев, в котором будет имя клиента и список этих услуг в строку - с использованием функции Group_Concat. Запрос на список этих услуг на каждого клиента на заданный месяц тоже не простой - из двух таблиц. Отсюда вопрос: как оптимальнее будет организовать представление - обычный селект (соответственно, с подключением 12 раз по две этих таблицы в секцию From), вложенные запросы на каждый месяц или функция, которая принимает в качестве параметра клиента и месяц и возвращает строку услуг через какой-то сепаратор
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Я бы реализовал встроенной функцией - из тех элементарных соображений, что функция выполняется сервером, который всегда быстрее клиентской машины, особенно с учетом времени на прохождение запросов/ответов по сети.
Снег Север, дело не в клиентской машине. Это в любом случае будет вьюха - то есть, в итоге, один селект, выполняющийся как раз на сервере. Но уж больно он тяжелый получается, вот я и пытаюсь его как-то оптимизировать
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Вполне может оказаться, что выгоднее запустить несколько запросов в цикле функции, чем один селект. а вообще - профайлинг вам в помощь:
https://habr.com/ru/articles/70435/
https://habr.com/ru/articles/70435/
