このクエリをさらに高速化できるかどうかに興味がありますか? または、より適切に機能する同様のクエリが他にある場合は?
SELECT id,source FROM posts
WHERE id = ANY(SELECT image_id FROM `post_tags` WHERE tag_id = (SELECT id FROM `tags` WHERE tag = _utf8 '$TAG' collate utf8_bin))
AND posts.exists = 'n'
ORDER BY posts.ratecount DESC
LIMIT 0,100
以下を使用しない場合:
AND posts.exists = 'n'
ORDER BY posts.ratecount
DESC LIMIT 0,100
クエリを使用可能なレベルまで高速化しますが、私がやっていることには多少必要です。
- タグ テーブルには、'tag' と 'id' の両方に一意のインデックスがあります。
- タグには 83K 行あります。
- Post_tags には、「image_id」、「tag_id」の一意のインデックスがあります。また、それぞれの通常のインデックス。
- Post_tags には 471K 行あります。
- 投稿には「id」の一意のインデックスがあります。また、'exists' と 'ratecount' の通常のインデックス。
- Posts テーブルには約 110 万行あります。