我的应用拥有超过10万用户。
我有两张桌子:
id(PK), name, ... , (followers) --> need???
artist_id, user_id
(两个PK)我需要获得每个艺术家的粉丝数量。
哪个更符合逻辑,更正确? (内存和cpu )
A:
select id, name, followers
from artist
limit 30
B:
SELECT c.*, COUNT(b.artist_id) AS `followers`
FROM (SELECT a.id, a.name
FROM artists a
INNER JOIN following b ON a.id = b.artist_id AND b.user_id = ?) AS c
LEFT JOIN following b ON c.id = b.artist_id
GROUP BY c.id
ORDER BY `followers` DESC
limit 30
感谢。
答案 0 :(得分:1)
使用方法A获取数据会更快,但数据可能过时,因为它可能无法反映真实计数。 (您将不得不继续定期使用方法A更新计数)
使用方法B,它会更慢,但你会实时计算。如果实时显示计数并不重要,那么我建议您使用方法A,然后定期更新关注者计数