每次查询数据还是将值存储在表中?

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 所说的去做。

以上是关于每次查询数据还是将值存储在表中?的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 数据库表中有索引为什么还是查询慢?

我应该将消息存储在我的数据库中还是每次都查询系统 SMS 数据库?

PostgreSQL PL/pgSQL:存储在表中的查询(营业时间)

Oracle创建索引SQL简单的例子,在表中的指定字段和如何使用索引呢?

Oracle创建索引SQL简单的例子,在表中的指定字段和如何使用索引呢?

只进行一次查询并将其存储在数组中还是每次都进行查询更有效?