Bạn có thể trợ giúp trình tối ưu hóa MySQL bằng cách chuyển tất cả công việc lọc sang một truy vấn con chỉ truy cập các chỉ mục (thao tác với các chỉ mục thường nhanh hơn nhiều so với thao tác với dữ liệu khác) và tìm nạp phần còn lại của dữ liệu trong truy vấn ngoài cùng:
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
Lưu ý rằng tôi bỏ qua ORDER BY posts.post_id DESC
từ truy vấn bên ngoài, bởi vì việc sắp xếp kết quả cuối cùng trong mã của bạn thường nhanh hơn so với sắp xếp bằng cách sử dụng truy vấn MySQL (MySQL thường sử dụng filesort cho điều đó).
P.S. Bạn có thể thay thế khóa duy nhất trong follow
bảng có khóa chính.