Как добавить индекс в табличное представление MySQL - PullRequest
0 голосов
/ 13 июня 2019

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

CREATE VIEW dashboard_sales AS (
    SELECT o.order_id,
           o.order_date,
           o.order_status,
           o.order_gender,
           o.order_birth_date,
           op.op_status,
           op.op_payment_code,
           oi.oi_qty,
           op.op_total,
           oi.item_id,
           i.item_name,
           dc.dc_id,
           dc.dc_name,
           dc.dc_sales,
           c.id_city,
           c.name_city,
           pc.pc_caption
    FROM `order` o 
    LEFT JOIN order_items oi
    ON o.order_id = oi.order_id
    LEFT JOIN order_payment op
    ON o.order_id = op.order_id
    LEFT JOIN item i
    ON oi.item_id = i.item_id
    LEFT JOIN distribution_channel dc
    ON o.dc_id = dc.dc_id
    LEFT JOIN city c
    ON o.order_city = c.id_city
    LEFT JOIN payment_channel pc
    ON op.op_payment_code = pc.pc_code
);

, но поскольку записей много, и я ищу решение, которое заключается в добавлении индексациикак показано ниже,

CREATE INDEX MyIndex
ON dashboard_sales(op_total, order_date)

, но я получаю некоторую ошибку, подобную этой,

#1347 - 'matoa_admin.dashboard_sales' is not BASE TABLE

, как решить эту проблему?и это может сделать индексацию в табличном представлении?

1 Ответ

0 голосов
/ 13 июня 2019

Вам необходимо создать индекс для таблиц, а не для самого представления.

op_total и order_date здесь не первая проблема.Сначала необходимо убедиться, что предложения on в основном запросе используют индексированные столбцы, а если нет, то вам может потребоваться создать соответствующие индексы для него.

Я предлагаю вам использовать план объяснения для выявления проблем с производительностью.И тогда вы можете предпринять необходимые действия.

Запрос сам по себе не дает нам информации, и план объяснения необходим для определения возможных проблем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...