@kirill-93

Как улучшить такой запрос mysql?

Получаю посты из базы, в 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;
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 1
@SharuPoNemnogu
не язык плохой, программисты такие...
post_user тут каким боком? она нигде не участвует, просто присоединяется. Какие индексы есть? покажите explain данного запроса
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы