Mysql 有没有办法改进这个查询?将子查询与自身连接
我正在使用Wordpress和MySQL,我有以下查询Mysql 有没有办法改进这个查询?将子查询与自身连接,mysql,wordpress,join,subquery,Mysql,Wordpress,Join,Subquery,我正在使用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_rela
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_PosteTa表中获取followers_计数。所以我们有4个连接表
我想用followers_count得到该帖子在指定国家的排名,这是最后一个子查询
它现在可以工作了,但我觉得它可以改进,因为我选择了所有帖子及其相应的国家和关注者,然后再次查询相同的表,从我选择的帖子中获取国家和关注者数量(本例中为80),所以我将第一次查询限制为仅该国家
我尝试了临时表,但我不能在同一个查询中多次使用它,而且MySQL中不存在CTE,所以我这样做了
有没有一种方法可以改进这一点,或者将查询缩小一点,而不仅仅是性能,我想了解更多。如果您刚刚学习完,那么我将开始将所有子选择转换为联接。查看“explain extended”的输出,看看优化器对这个查询做了什么,然后将其作为一系列连接重复。通常情况下,如果不使用子选择,它会更快更容易处理 若干参考资料:
注意-这不是100%的规则-您的里程可能会有所不同