MySql просмотр очень медленный. Зачем? - PullRequest
1 голос
/ 10 июля 2020

Мой обычный запрос:

SELECT
    DISTINCT vt.id as id,
    vtt.name as n,
    vt.etxid as etx
FROM vt
LEFT JOIN vtt ON
    (vtt.locale = "etx"
    AND vtt.etxid = vt.etxid)

Время выполнения: 5 мс

Мое представление:

CREATE OR REPLACE VIEW myview AS
SELECT
    DISTINCT vt.id as id,
    vtt.name as n,
    vt.etxid as etx
FROM vt
LEFT JOIN vtt ON
    (vtt.locale = "etx"
    AND vtt.etxid = vt.etxid)

Мое представление запроса:

SELECT * from myview;

Время выполнения: 600 мс

1 Ответ

1 голос
/ 10 июля 2020

Как только вы упоминаете DISTINCT или функции агрегирования в представлении, MySQL выбирает алгоритм TEMPTABLE для этого представления, а это означает, что он создает временную таблицу для представления, а затем применяет к ней сортировку, группировку и агрегирование. Подробности смотрите здесь . Также здесь есть некоторые рекомендации относительно производительности просмотра .

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