私はWordpressとMySQLで作業しており、次のクエリがあります
SELECT COUNT(p.ID)
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS t1
ON t1.post_id = p.ID
AND t1.meta_key = 'followers_count'
LEFT JOIN
(SELECT tt.term_id,tr.object_id
FROM wp_term_relationships AS tr
INNER JOIN wp_term_taxonomy AS tt
ON tt.term_taxonomy_id = tr.term_taxonomy_id
AND tt.taxonomy='paises'
) as terms
ON p.ID=terms.object_id
INNER JOIN
(SELECT meta_value,tt.term_id
FROM wp_postmeta AS t1
LEFT OUTER JOIN wp_term_relationships AS tr
ON t1.post_id=tr.object_id
INNER JOIN wp_term_taxonomy AS tt
ON tt.term_taxonomy_id = tr.term_taxonomy_id
AND tt.taxonomy='paises'
WHERE t1.post_id = 80
AND t1.meta_key = 'followers_count'
) AS f
ON p.post_type='post'
AND p.post_status='publish'
AND t1.meta_value>f.meta_value
AND terms.term_id=f.term_id
基本的にここで行っているのは、term テーブルから投稿国を取得し、wp_postmeta テーブルから follower_count を取得することです。したがって、4 つの結合テーブルがあります。
そして、最後のサブクエリである followers_count を使用して、指定された国でのその投稿のランクを取得したいと考えています。
現在は機能していますが、対応する国とフォロワーを含むすべての投稿を選択しているため、改善できると思います。次に、同じテーブルをクエリして、選択した投稿から国とフォロワーの数を取得します (この例では 80)ケース) したがって、最初のクエリをその国のみに制限します。
一時テーブルを試しましたが、同じクエリで複数回使用することはできず、CTE は MySQL に存在しないため、これを行いました。
これを改善する方法、またはクエリを少し縮小する方法はありますか?パフォーマンスよりももう少し学びたいです。