我正在使用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
基本上我在这里做的是从术语表中获取post country,从wp_postmeta表中获取followers_count。所以我们有4个连接表。
我想使用followers_count获取指定国家/地区中该帖子的排名,这是最后一个子查询。
它现在有效,但我觉得它可以改进,因为我选择所有帖子与他们相应的国家和粉丝,然后我再次查询相同的表格,从我选择的帖子中获取国家和粉丝数量(在这种情况下为80)所以我将第一个查询限制为仅该国家。
我尝试过临时表,但我不能在同一个查询中多次使用它,并且MySQL中不存在CTE,所以我这样做了。
有没有办法改进这个或缩小查询一点,而不是我希望学习更多的性能。