Thử loại bỏ distinct
. Đó là một kẻ giết người về hiệu suất. Tôi không chắc tại sao truy vấn đầu tiên của bạn hoạt động nhanh chóng; có lẽ MySQL đủ thông minh để tối ưu hóa nó.
Tôi sẽ thử:
SELECT tt.id
FROM tracked_twitter tt
WHERE EXISTS (SELECT 1
FROM twitter_content tc INNER JOIN
tracker_twitter_content ttc
ON tc.id = ttc.twitter_content_id
WHERE ttc.tracker_id = 88 AND
tt.id = tc.tracked_twitter_id
)
ORDER BY tt.followers_count DESC ;
Đối với phiên bản này, bạn muốn lập chỉ mục trên:tracked_twitter(followers_count, id)
, twitter_content(tracked_twitter_id, id)
và tracker_twitter_content(twitter_content_id, tracker_id)
.