每次查询数据还是将值存储在表中?
Posted
技术标签:
【中文标题】每次查询数据还是将值存储在表中?【英文标题】:Query data every time or store values in table? 【发布时间】:2017-08-02 16:11:49 【问题描述】:我有一个players
的表,其中有一个名为scores
的字段。玩家在不同的游戏中获得不同的分数。每隔几分钟,我就想知道某个玩家在那之前获得的总得分。
请注意,我想经常执行此操作。
问题是,我应该选择哪种方式?
1) 在我的用户表中定义一个字段为player_score
,并在每场比赛结束后更新它。
2) 每次我要计算一个玩家的总分时,查询所有的游戏并总结到目前为止获得的分数。
谢谢你的帮助:)
【问题讨论】:
您可以混合使用这两种方法;有一个每场比赛的得分表,以及一个更新总分的触发器。您希望每秒查询多少次此数据? @CaiusJard 我认为一秒钟一次对游戏有好处。 哦,我原以为每秒会达到数千次……最好只保留分数历史,将其索引并在需要时进行汇总。它降低了复杂性,并且每秒一次的负载对服务器来说并不是很痛苦。如果它确实变大了,您也可以考虑使用 Redis 缓存之类的东西来提供帮助 @CaiusJard 非常感谢您的帮助:) 【参考方案1】:取决于您的桌面游戏注册人数。如果您有太多记录,则选择将花费更长的时间。
【讨论】:
是的,这个游戏有很多玩家。我想我应该按照@CaiusJard 所说的去做。以上是关于每次查询数据还是将值存储在表中?的主要内容,如果未能解决你的问题,请参考以下文章
我应该将消息存储在我的数据库中还是每次都查询系统 SMS 数据库?
PostgreSQL PL/pgSQL:存储在表中的查询(营业时间)
Oracle创建索引SQL简单的例子,在表中的指定字段和如何使用索引呢?