MySQL - 保存和加载项目的最佳方法

时间:2010-01-12 03:51:06

标签: mysql loading save

所以在我以前的作品中,我总是使用'​​text'数据类型来存储项目,如下所示:

0=4151:54;1=995:5000;2=521:1;

所以基本上:slot=item:amount;

我一直在寻找在sql数据库中找到存储信息的最佳方法,无论我走到哪里,都说使用文本是一个很大的性能影响。

我正在考虑做其他事情,比如有一个包含以下列的表:

id, owner_id, slot_id, item_id, amount

现在我可以为角色分配的每个项目插入一行。但我不知道如何保存它们,因为插槽的项目可以更改,等等。一个字符有28个库存插槽和500个银行插槽,我应该在注册时插入它们吗?或者有更聪明的方法来保存项目

2 个答案:

答案 0 :(得分:2)

是的,使用那种结构。使用文本存储关系数据会破坏关系数据库的目的。

在注册时将所有内容全部插入,我看不出你的意思。你能否根据需要插入它们?

修改

根据您之前的评论,我建议只根据需要插入一个插槽(如果我理解您的问题)。如果需要,可以在应用程序中保留插槽的ID。

答案 1 :(得分:1)

如果我理解正确,并且插槽的项目可以更改,那么您希望进一步抽象item_id和项目之间的映射:

entry_tbl.item_id->item_rel_realitems_tbl.real_id->items_tbl

这样,带有itemid的所有条目都指向将这些id映射到可变项的表。当您更新'items_tbl'中的项目时,映射会自动更新entry_tbl。

然而,需要另一个JOIN。我也会在任何情况下使用存储过程从语义中抽象出机制。

但我不确定我理解你问题的措辞。