我与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
基本上我在这里做是从术语表中获得那个职位的国家,FOLLOWERS_COUNT从wp_postmeta表。所以我们有4个连接表。
我想使用followers_count在指定的国家/地区获得该帖子的排名,这是最后一个子查询。
它现在,但我觉得这可能是因为我选择的所有帖子与它们对应的国家和追随者加以改进,然后再次我查询相同的表从后我选择让追随者的国家和数量(在这种情况下为80),所以我将第一个查询限制在该国家。
我试过临时表,但我不能在同一个查询中多次使用它,而CTE在MySQL中不存在,所以我这样做了。
有没有一种方法来改善这个问题或缩小查询的范围,而不仅仅是性能,我想多了解一点。