Vous pouvez aider l'optimiseur MySQL en déplaçant tout le travail de filtrage vers une sous-requête qui n'accède qu'aux index (la manipulation des index est généralement beaucoup plus rapide que la manipulation d'autres données) et en récupérant le reste des données dans la requête la plus externe :
SELECT posts.post_id,
posts.post_b_id,
posts.post_title,
posts.post_cont,
posts.thumb,
posts.post_user,
boards.board_title_l,
boards.board_title
FROM (SELECT post_id
FROM posts
JOIN follow
ON posts.post_b_id = follow.board_id
WHERE follow.user_id = 1
ORDER BY post_id DESC
LIMIT 10) sq
JOIN posts
ON posts.post_id = sq.post_id
JOIN boards
ON boards.board_id = posts.post_b_id
Notez que j'omets ORDER BY posts.post_id DESC
à partir de la requête externe, car il est généralement plus rapide de trier le résultat final dans votre code plutôt que de trier à l'aide d'une requête MySQL (MySQL utilise souvent filesort pour ça).
PS Vous pouvez remplacer la clé unique dans le follow
table avec une clé primaire.