sql: объединение нескольких разных запросов к таблице в один ответ

Рейтинг: 0Ответов: 0Опубликовано: 11.03.2023

Подскажите как оптимальнее сделать следующую задачу:

требуется получить кол-во записей по двум разным группам из одной таблице, т.е. сделать следующие 2 запроса:

SELECT
    COUNT(*) AS count, YEAR(date_x) AS value
FROM
    table
ORDER BY date_x

и

SELECT
    COUNT(*) AS count, YEAR(date_y) AS value
FROM
    table
ORDER BY date_y

Первое решение - просто кинуть 2 запроса и успокоиться

Второе решение - получить сразу 2 ответа в виде JSON (всё равно дальше работать с JSON) за один запрос:

SELECT
(
    SELECT 
        JSON_ARRAYAGG(JSON_MERGE(JSON_OBJECT('count', count), JSON_OBJECT('value', value)))
    FROM
        (SELECT
             COUNT(*) AS count, YEAR(date_x) AS value
        FROM
            table
        ORDER BY date_x) as result
) as result_x,
(
    SELECT 
        JSON_ARRAYAGG(JSON_MERGE(JSON_OBJECT('count', count), JSON_OBJECT('value', value)))
    FROM
        (SELECT
            COUNT(*) AS count, YEAR(date_y) AS value
        FROM
            table
        ORDER BY date_y) as result
) as result_y

По идее работать должно одно и тоже время, но надежда на БД - авось оптимизирует

Вопрос: Но может для таких задач есть какое-то третье, производительное правильное решение?

Ответы

Ответов пока нет.