我正在使用一个查询GraphQL数据库的PostgreSQL API。已经创建的两个表是:
在第二个表中,我们为两个不同的用户存储两个外键,这意味着第一个是在第二个用户之后。
我前端的同事告诉我,他在用户模式中有一个"followersCount“字段是很方便的,这样就不需要询问用户的所有追随者,只为了知道他有多少人。
我的天真(或不)解决方案是在db中设置两个触发器,如果在"users_follow“中插入一个新的追随者,一个会增加表用户中的计数器,而如果发生删除,则一个会减少计数器。
对于可伸缩性来说,有这样的设置可以吗?我应该仅仅使用"count()“来满足模式中的"followersCount”吗?
发布于 2019-10-15 11:48:31
有句老话:
过早的性能优化是万恶之源。
好吧,我想如果这是真的话,世界会变得更好。但有一点是真实的。
因此,首先创建代码并尝试使用索引和分区优化查询。
然后,您可以处理其他解决方案,包括触发器、物化视图和在存储过程中包装DML操作(类似于触发器,但在我看来更易于维护)。
发布于 2019-10-15 11:44:16
这应该是最优的:
select count(user_2) as cnt from users_follow where user_1 = ?.
您可以将其包装为一个可调用的函数get_user_follower_count( x )
,以使另一个人轻松。
https://stackoverflow.com/questions/58393841
复制相似问题