我正在开发一款在线游戏,它将玩家的进度保存到 MySQL 数据库中,并且我正在尝试优化性能。该数据将采用与特定进度成就相对应的 ID 形式。这些“成就”将包括与 NPC 交谈、发起任务、完成任务等,因此 ID 将不按特定顺序添加到数据库中。在以下情况下,我目前无法决定如何存储成就数据:
1)作为“玩家”表上的逗号分隔文本字段(例如 32,2,53,1,3,5)。每次触发成就时,相应的 ID 都会添加到文本字段的末尾。PHP 端将使用 strpos 执行检查。
2)存储为 Player_Progress 表中的记录。这可能意味着每个玩家有大量(约 100 条)记录,我不知道这会如何影响性能。
我知道分隔字段是不受欢迎的,但是看到数据只检查了几次,并且只添加到(未删除),我想知道在这种情况下规范化是否有点矫枉过正?