当配置文件是 Actor 时,此查询会为我提供证据记录最多的配置文件。 有什么方法可以让它在 mysql 查询中更快?
SELECT profiles.*, count(*) AS counted_profiles
FROM `profiles`
INNER JOIN (SELECT ev.actor_id
FROM evidences AS ev
WHERE ev.actor_type = 'Profile') AS ev2
ON ev2.actor_id = profiles.id
GROUP BY ev2.actor_id
ORDER BY counted_profiles DESC LIMIT 10
最佳答案
您可以删除 profiles.*
,删除子选择,并为连接字段添加索引。
另外,考虑一下:
SELECT ev.actor_id, count(*) AS counted_profiles
FROM `profiles` INNER JOIN evidences AS ev
ON ev.actor_id = profiles.id AND ev.actor_type = 'Profile'
GROUP BY ev.actor_id
ORDER BY counted_profiles DESC LIMIT 10
关于sql - 有没有更快的方法来计算连接上的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1742070/