Помогите оптимизировать SQL-запрос - PullRequest
0 голосов
/ 14 декабря 2010

Я замечаю некоторые проблемы с производительностью на моем MySQL сервере.Журнал медленных запросов показывает четыре запроса, которые вызывают проблему, на выполнение каждого запроса уходит около 10 секунд.Мне интересно, есть ли более эффективный способ выполнения запроса.

Таблица, из которой я выбираю, имеет около 13 000 строк и имеет такую ​​структуру:запросы - по одному для каждого типа, которые выбирают каждый р и порядок по времени.Эти данные отображаются в передней части веб-сайта через четыре таблицы.

Медленные запросы:

SELECT type,id,p,time,b,o
FROM zz
WHERE id = (SELECT MAX(id) FROM zz AS f
            WHERE f.p = zz.p
            AND type = 'pmx')
AND TYPE = 'pmx';

(то же самое для трех других типов)

У кого-нибудь есть советы по улучшению фактического запроса?

Спасибо

1 Ответ

0 голосов
/ 14 декабря 2010

Как насчет чего-то вроде

SELECT  zz.type,
        zz.id,
        zz.p,
        zz.time,
        zz.b,
        zz.o
FROM    zz INNER JOIN
        (
            SELECT  type,
                    MAX(id) MaxID
            FROM    zz
            WHERE   type IN ('1','2','3','4')
            GROUP BY type
        ) m ON  zz.type = m.type
            AND zz.ID = m.MaxID

Где ('1','2','3','4') - четыре рассматриваемых типа.

...