Есть запрос, который выполняется 7 секунд. Записей в таблице img около 10к.
SELECT img.id,date,title,url,views,votes,values,name
FROM img
INNER JOIN img_views ON img.id = img_views.m
INNER JOIN img_rating ON img.id = img_rating.m
INNER JOIN users ON img.user = users.id
WHERE status = '1'
ORDER BY img.id DESC LIMIT 0, 10
Тестами выяснил, что тормоза идут от INNER JOIN img_views и INNER JOIN img_rating. В этих таблицах хранятся данные о рейтинге записей и количество просмотров, по 10к в каждой таблице.
Есть ли способ оптимизировать запрос? И есть ли смысл хранить данные о рейтинге записей и количество просмотров в других таблицах? Таблицы в InnoDB.
ON. Иstatusон в какой у вас таблице. Невозможно дать рекомендаций не понимая для чего вообще созданы views и rating например и какую они еще несут нагрузку кроме хранения неких колонок, которых в данном запросе даже не видно что откуда – Mike Feb 05 '16 at 18:51set VIEWS=VIEWS+1, то есть блок таблицы, не скажется ли он на производительности? – Rufex Feb 05 '16 at 19:12show create tableдля всех таблиц это бессмысленный разговор, на самом деле – strangeqargo Aug 06 '16 at 13:40