Получаю посты из базы, в slow-query.log запрос пишется так:
# Query_time: 0.493179 Lock_time: 0.000039 Rows_sent: 21 Rows_examined: 127314
В mysql explain все хорошо, в поле rows 277 (это нужное количество записей).
Как вообще оптимизировать запросы, если в explain все хорошо? Не очень удобно лазить после каждого запроса в slow-query.log.
Ну и посоветуйте, пожалуйста, как такой запрос улучшить:
#
#posts - посты, привязанные к авторам (поле entity_id)
#entity_user - авторы, на которых пользователь подписан
#posts_user - просмотренные пользователем посты
#
#Получаем id постов
select `posts`.`id`
from `posts`
#Выбираем только те, на которые пользователь подписан
inner join `entity_user` on `entity_user`.`entity_id` = `posts`.`entity_id`
#Помечаем "прочитанные"
left join `post_user` on `post_user`.`post_id` = `posts`.`id` and `post_user`.`user_id` = 9
where `posts`.`created_at` >= '2016-09-20'
and `posts`.`is_duplicate` = '0'
and `posts`.`deleted` is null
and `entity_user`.`user_id` = 9
order by `posts`.`created_at` desc limit 21;