mysql - 库存数据库设计

标签 mysql database-optimization

我刚开始使用 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/

相关文章:

php - 在 Laravel 中使用迁移和模型类有什么好处?

php - PDO::FETCH_COLUMN 不获取任何内容

mysql - 比较mysql中同一列的值

mysql - 使用默认值与在查询中设置值的 MySQL 有任何性能差异吗?

mysql - 如果将 INT 列更改为 MEDIUMINT,我将节省多少大小?

仅当存在 "enabled"功能时,MySQL 两个值的唯一组合

mysql - 应该创建什么索引?

sql - 为了创建高质量的 Django 应用程序,我需要了解哪些关于数据库的知识?

MySQL 索引创建

php - 将多个值传递给 PHP 购物车