我刚开始使用 MySQL,我想了解在我的数据库中存储玩家库存元素的最有效方法是什么。
所以这是设置:
有一个名为'player'的表,每个玩家都被分配了一个唯一的'playerid',它被设置为表的主索引。
每个玩家的元素栏中最多可以有 24 件元素,这些元素的信息存储在名为'player_inventory' 的表中。该表包含以下字段:
playerid, slotid, uid, stack, uses, durability
'uid'是元素的id,'stack'、'uses'和'durability' 只是每个项目需要的值(例如,不同插槽中的相同类型的项目可能具有较低的'耐久性')。
问题是,我无法在 list 表中为 'playerid' 设置索引,因为每个玩家最多有 24 个插槽条目,并且其他字段都不能保证是唯一的.
所以我担心当这个表有 10000 个玩家的库存时,当我去查询它时,这个表中可能有 240,000 个没有索引的条目 - 有些东西告诉我这可能非常慢?
我对如何优化我的数据库知之甚少,非常欢迎任何建议。
最佳答案
索引——包括主键的唯一索引——可以在多个列上定义。
ALTER TABLE player_inventory ADD PRIMARY KEY (playerid, slotid);
这意味着这两列中值的组合必须是唯一的。但是一个给定的playerid可能出现在多行,一个给定的slotid可能出现在多行。
关于mysql - 库存数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7383467/