mysql为每个艺术家创建计数列或在查询中获取计数(计数追随者)

时间:2017-01-28 02:39:13

标签: mysql sql database mysqli

我的应用拥有超过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

感谢。

1 个答案:

答案 0 :(得分:1)

使用方法A获取数据会更快,但数据可能过时,因为它可能无法反映真实计数。 (您将不得不继续定期使用方法A更新计数)

使用方法B,它会更慢,但你会实时计算。如果实时显示计数并不重要,那么我建议您使用方法A,然后定期更新关注者计数