Приведена таблица mySQL с именем "user_posts" со следующими соответствующими полями:
- user_id
- user_status
- influenr_status
индексируется во всех трех полях
Мой медленный запрос здесь, а также я создал dbFiddle .Вывод объяснения находится в dbfiddle :
SELECT
P.user_post_id,
P.user_id_fk,P.post_type,
P.who_can_see_post,
P.post_image_id,P.post_video_id,
U.user_name, U.user_fullname,U.influencer_status
FROM user_posts P FORCE INDEX (ix_user_posts_post_id_post_type)
INNER JOIN users U FORCE INDEX (ix_status_istatus)
ON P.user_id_fk = U.user_id
WHERE
U.user_status='1' AND
U.influencer_status = '1' AND
(P.who_can_see_post IN('everyone','influencer','friends')) AND
(P.post_type IN('image','video'))
AND p.user_post_id > 30
ORDER BY
P.user_post_id
DESC LIMIT 30
Запрос занимает очень много времени, около 6-15 секунд.В противном случае база данных не очень загружена и хорошо справляется с другими запросами.
Мне, очевидно, интересно, почему запрос такой медленный.
Есть ли способ точно сказать, что так долго занимает mySQL?Или мне нужно внести изменения, чтобы запрос выполнялся быстрее?