2

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

相比:

1张表:1张表包含很多行(数据)。每个玩不同游戏的用户都会向该表提交分数。不知道如果多个用户同时提交会发生什么。这个表结构应该是:gameID、name、score。所以我只做 1 个查询来查看 1 个 php 页面中的游戏高分。

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

从长远来看,哪一个更好?sql性能如何?

我正在使用 php 和 mysql。

4

2 回答 2

3

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

讨论

如果您有 100.000 名玩家和 500 款游戏,您最多可以获得 50.000.000 个条目。但它们是数字的并且非常短。最好不要使用实时查询来提供此高分,而是使用缓存文件的结果。这就是几乎每个人都在做的事情。您每天更新缓存的高分列表。这样,您可以实时进行写入和从缓存中读取,并且它们不会干扰。

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

于 2009-07-28T09:52:57.223 回答
2

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

数据库旨在处理此类数据。只要索引正确,一张包含大量数据的表不会给您带来任何问题。

于 2009-07-28T09:54:23.100 回答