首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否建议在SQL表中有一个专用的计数字段?

是否建议在SQL表中有一个专用的计数字段?
EN

Stack Overflow用户
提问于 2019-10-15 11:40:20
回答 2查看 49关注 0票数 0

我正在使用一个查询GraphQL数据库的PostgreSQL API。已经创建的两个表是:

  • users
  • users_follow

在第二个表中,我们为两个不同的用户存储两个外键,这意味着第一个是在第二个用户之后。

我前端的同事告诉我,他在用户模式中有一个"followersCount“字段是很方便的,这样就不需要询问用户的所有追随者,只为了知道他有多少人。

我的天真(或不)解决方案是在db中设置两个触发器,如果在"users_follow“中插入一个新的追随者,一个会增加表用户中的计数器,而如果发生删除,则一个会减少计数器。

对于可伸缩性来说,有这样的设置可以吗?我应该仅仅使用"count()“来满足模式中的"followersCount”吗?

EN

回答 2

Stack Overflow用户

发布于 2019-10-15 11:48:31

有句老话:

过早的性能优化是万恶之源。

好吧,我想如果这是真的话,世界会变得更好。但有一点是真实的。

因此,首先创建代码并尝试使用索引和分区优化查询。

然后,您可以处理其他解决方案,包括触发器、物化视图和在存储过程中包装DML操作(类似于触发器,但在我看来更易于维护)。

票数 3
EN

Stack Overflow用户

发布于 2019-10-15 11:44:16

这应该是最优的:

代码语言:javascript
运行
复制
select count(user_2) as cnt from users_follow where user_1 = ?.  

您可以将其包装为一个可调用的函数get_user_follower_count( x ),以使另一个人轻松。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58393841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档