U kunt MySQL-optimizer helpen door al het filterwerk te verplaatsen naar een subquery die alleen toegang heeft tot indices (het manipuleren van indices is meestal veel sneller dan het manipuleren van andere gegevens), en de rest van de gegevens in de buitenste query op te halen:
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
Merk op dat ik ORDER BY posts.post_id DESC
. weglaat van de buitenste query, omdat het meestal sneller is om het uiteindelijke resultaat in uw code te sorteren in plaats van te sorteren met behulp van een MySQL-query (MySQL gebruikt vaak filesort daarvoor).
PS U kunt de unieke sleutel vervangen in het follow
tabel met een primaire sleutel.