次の、パフォーマンスの遅い SQL クエリがあります。
SELECT *
FROM news_events
WHERE 1 AND (user_id = 2416) OR id IN(SELECT content_id FROM likes WHERE user_id = 2416)
ORDER BY id DESC
LIMIT 0,10
news_eventsテーブルには、user_id のインデックスがあります。likesテーブルにはuser_id のインデックスがあります。
パフォーマンスを改善するために、次のように INNER JOIN を使用してクエリを書き直しました。
SELECT a.*
FROM news_events a
INNER JOIN likes b ON (a.id = b.content_id)
WHERE (a.user_id = 2416) OR (b.user_id = 2416)
ORDER BY a.id DESC
LIMIT 0,10
しかし、パフォーマンスも向上しません。この最後のクエリで Explain を実行した結果は次のとおりです。
このクエリのパフォーマンスを向上させるために何ができるかについての指針をいただければ幸いです。