保存到一个表或创建多个表?

时间:2009-07-28 09:51:07

标签: php mysql structure

我处于两难境地,不知道哪一个更好。假设我的网站上有100个++(或更多)游戏。我想为每场比赛存储高分。我应该将所有高分存储在1个表中,还是每个游戏都有自己的表?

比较

1表:1表包含很多行(数据)。每个用户玩不同的游戏都会将分数提交到此表。不知道如果许多用户同时提交将会发生什么。此表结构应为:gameID,name,score。所以我只是进行了一次查询,以便在1个php页面中查看哪个游戏的高分。

如果使用多个表(每个游戏都有自己的表),我会有更多的表,但行数(数据)要少得多。

从长远来看哪一个更好? sql性能怎么样?

我正在使用php和mysql。

2 个答案:

答案 0 :(得分:3)

我会为玩家制作一张桌子,一张用于游戏的桌子和一张用于高分的多对多牌桌子,其中包含player_id,game_id和高分值。

<强>讨论

如果您有100,000个玩家和500个游戏,则最多可以获得50.000.000个条目。但它们是数字而且很短。 最好不要使用实时查询来提供这个高分,而是来自缓存文件的结果。这几乎是每个人都在做的事情。您每天都会更新高分榜的缓存列表。通过这种方式,您可以实时写入和从缓存中读取,而且不会干扰。

另一个建议是每月重置高分榜,或根据访问频率将旧数据分开。正如我在其首席开发人员的演示文稿中看到的那样,Facebook正在做这样的事情。

答案 1 :(得分:2)

您应该使用单表选项。这样,当您添加更多游戏时,您无需更改数据库架构。

数据库旨在处理这样的数据。如果一个表包含大量数据,只要它被正确编入索引就不会给您带来任何问题。