gpt4 book ai didi

mysql - MySQL 字段太多?

转载 作者:可可西里 更新时间:2023-11-01 06:37:37 25 4
gpt4 key购买 nike

几年前,我开发了一个游戏统计网站作为学习项目。它今天仍在使用,我想稍微清理一下。

数据库是需要改进的地方之一。我有一个游戏统计表,其中包含 GameID、PlayerID、Kills、Deaths、DamageDealt、DamageTaken 等。该表中总共有大约 50 个字段,将来可以添加更多字段。什么时候字段太多了?它目前有 57,341 行,本身为 153.6 MiB。

我还有一些字段将数组存储在同一个表中的 BLOB 中。该数组的一个示例是玩家对玩家对决。该数组存储该玩家在游戏中杀死另一个玩家的次数。这些是文件大小中较大的字段。是否建议将数组存储在 BLOB 中?

数组看起来像:

        [Killed] => Array
(
[SomeDude] => 13
[GameGuy] => 10
[AnotherPlayer] => 8
[YetAnother] => 7
[BestPlayer] => 3
[APlayer] => 9
[WorstPlayer] => 2
)

这些玩家通常不会超过 10 人。

最佳答案

我不希望有一个列数不确定的表(以后还会有更多列),而是有一个关联的标签和值表,这样每个用户都有一个 ID,您可以使用该 ID 作为键进入标签和值表。这样你就只存储每个用户需要的数据。我相信这种方法被称为 EAV(根据 Triztian 的评论),这就是医疗数据库的保存方式,因为单个患者有如此多的潜在领域,即使任何给定患者只有极少数具有实际数据的领域.

所以,你会有

user:
id | username | some_other_required_field

user_data:
id | user_id | label | value

现在,您可以根据需要为每个用户设置尽可能多或尽可能少的 user_data 行。

[编辑]

至于你的数组,我也会用关系表来处理它。像这样的东西:

player_interraction:
id | player_id | player_id | interraction_type

在这里您将存储进行交互的两个玩家以及交互的类型。

关于mysql - MySQL 字段太多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419984/

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