2013-11-02 5 views
0

У меня есть большая таблица с тем, что по сути является журнальными записями. Для большинства моих запросов, мне нужна таблица с последними записями, поэтому я создал «вид» из следующего запроса:MySQL Создать таблицу из запроса

SELECT t1.store_id, t1.code_id, t1.working, t1.expiration, t1.details, t1.price 
    FROM code_stores t1 
    LEFT OUTER JOIN code_stores t2 
    ON (t1.store_id = t2.store_id AND t1.code_id = t2.code_id AND t1.id < t2.id) 
    WHERE t2.store_id IS NULL 

Затем я использую этот «вид» в моем запросе. К сожалению, это приводит к медленным запросам, поэтому я хотел бы как-то кэшировать результаты этого представления. Поскольку это представление будет меняться несколько раз в день (когда я могу запустить запрос для обновления таблицы кэша), я бы хотел создать временную таблицу, в которой хранятся результаты этого представления, и обновлять ее в течение дня.

Как мне это сделать? Я читал о материализованных представлениях, но, похоже, они не работают с mysql. Большую помощь будет очень благодарна.

+0

Почему вы не добавляете индексы? –

+0

Вы имеете в виду добавление индексов в конкретные столбцы? Я прошел через и добавил их в любом месте, где используется «WHERE» или «JOIN ON», а производительность по-прежнему очень плохая (1 секунда за запрос). Я пробовал использовать «EXPLAIN», но я долго тянул свои волосы, пытаясь понять это. Я думал, что кеширование этого представления может повысить производительность. – xur17

+0

Похоже, что моя проблема - это количество результатов запроса. Запрос выводит> 1000 строк. Если я применяю LIMIT 20, это сокращает время запроса до 13 мс. Я думаю, мне просто нужно создать страницу с лучшими результатами, которая не включает отображение 1000 строк. – xur17

ответ

0

С идеей использования временной таблицы я предлагаю использовать триггер, чтобы временная таблица обновлялась каждый раз при изменении таблицы code_store.

+0

Я мог бы использовать триггеры, или я мог бы принудительно обновить временную таблицу после того, как мой сервер завершит обновление до полной таблицы. В любом случае, я все еще не уверен, как создать временную таблицу, подобную этой, которая основана на запросе. – xur17

Смежные вопросы