gpt4 book ai didi

php - 使用一个表来保存另一个更大表的 COUNT/SUM 是不是糟糕的设计?

转载 作者:行者123 更新时间:2023-11-29 06:43:48 25 4
gpt4 key购买 nike

我正在用 PHP/MySQL 制作梦幻博彩联赛应用程序,我有两个表:

Achievements - 当前包含玩家的所有时间成就,包含以下列:

user_id
total_gold_medals
total_silver_medals
total_bronze_medals
total_bets
total_winnings

赌注 - 这是每个用户下的每个单独赌注的列表,该赌注是否获得了奖牌,以及收到了多少奖金(如果有的话)。

date_placed
user_id
winnings
gold_medal
silver_medal
bronze_medal

现在,由于预测是基于实时事件,结果有时会发生变化,所以我不想在 2 周过去之前增加 achievements 表。

目前,我有两个类似数据表的原因是因为我不想从不断增长的 bets 表中查询和计算/求和,而我只需要其中的一小部分本周的数据库。

95% 的时间我将只使用 achievements 表中的数据,所以我最初的想法是将数据从 bets 移动到 achievements 在 2 周过去后,并使用新的 archived 字段将它们标记为“已存档”,这样它们就不会包含在任何进一步的 SUM() 中。不过,这种将数据保存在两个地方的方法似乎是一种非常笨拙的做事方式。我是否应该以不同的方式做事,也许是不同的表结构?你会怎么做?

最佳答案

目前尚不清楚您要实现的目标。原则上,对成就表的需求并不明确,因为它可以从赌注表中计算(计数、求和)。如果 bets 有时间戳,则可以轻松实现不考虑最近两周的情况。

如果您关心性能,那么为总计创建一个辅助表,所谓的聚合表(一些数据库称之为物化 View )可能是一种有效的方法。

但是,当且仅当应用程序逻辑稳定且性能问题变得可预见时,我强烈建议构建性能优化。

PS.:然而,我会质疑银、铜、金列的使用,而是为此引入一个(数字)类型的列。

关于php - 使用一个表来保存另一个更大表的 COUNT/SUM 是不是糟糕的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19861383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com