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

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

Похожие вопросы