У меня есть большая таблица с тем, что по сути является журнальными записями. Для большинства моих запросов, мне нужна таблица с последними записями, поэтому я создал «вид» из следующего запроса: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. Большую помощь будет очень благодарна.
Почему вы не добавляете индексы? –
Вы имеете в виду добавление индексов в конкретные столбцы? Я прошел через и добавил их в любом месте, где используется «WHERE» или «JOIN ON», а производительность по-прежнему очень плохая (1 секунда за запрос). Я пробовал использовать «EXPLAIN», но я долго тянул свои волосы, пытаясь понять это. Я думал, что кеширование этого представления может повысить производительность. – xur17
Похоже, что моя проблема - это количество результатов запроса. Запрос выводит> 1000 строк. Если я применяю LIMIT 20, это сокращает время запроса до 13 мс. Я думаю, мне просто нужно создать страницу с лучшими результатами, которая не включает отображение 1000 строк. – xur17