Показывать консультации формы более оптимального MySql

В настоящее время у меня есть консультация, которая работает, по поводу двух таблиц egresos (expenses) и ingresos (incomes). Это пример, как видна структура обоих таблиц, так как они обладают теми же колоннами:

|       id|        date |   amount|
|---------|-------------|---------|
|        1|  2019-02-02 |     2500|
|        2|  2019-03-16 |    4000 |
|        3|  2019-04-02 |    5430 |

и это консультация, которая у меня есть в настоящее время:

SELECT
    t1.month,
    COALESCE(t2.amount, 0) AS expenses,
    COALESCE(t3.amount, 0) AS incomes
FROM
(
    SELECT 1 AS month UNION ALL
    SELECT 2 UNION ALL
    SELECT 3 UNION ALL
    SELECT 4 UNION ALL
    SELECT 5 UNION ALL
    SELECT 6 UNION ALL
    SELECT 7 UNION ALL
    SELECT 8 UNION ALL
    SELECT 9 UNION ALL
    SELECT 10 UNION ALL
    SELECT 11 UNION ALL
    SELECT 12
) t1
LEFT JOIN
(
    SELECT MONTH(date) AS month, SUM(amount) AS amount
    FROM expenses
    GROUP BY MONTH(date)
) t2
    ON t1.month = t2.month
LEFT JOIN
(
    SELECT MONTH(date) AS month, SUM(amount) AS amount
    FROM incomes
    GROUP BY MONTH(date)
) t3
    ON t1.month = t3.month
ORDER BY
    t1.month;

Здесь - нить, чтобы видеть подробно и реализовывать тесты:

Консультация возвращает полную общую сумму обоих таблиц из-за каждого месяца настоящего года, это функционирует хорошо. Однако проверив план выполнения, так как у меня есть много записей, эта опаздывает слишком много, из-за которого Вы пробегаете все записи обоих таблиц. Тогда: как я могу оптимизировать ее? Я старался добавить индекс к полю date без какого-либо улучшения. Я должен преобразовывать мою консультацию?

22
задан 30.08.2019, 15:57
0 ответов