假设您有一个包含单个表的数据库,例如...
---------------------------------------------
| Name | FavoriteFood |
---------------------------------------------
| Alice | Pizza |
| Mark | Sushi |
| Jack | Pizza |
---------------------------------------------
如果有一个名为“Strings”的附加表来存储字符串,并将 FavoriteFood 列更改为字符串表中的索引,是否会更节省空间。在上面的示例中,“Pizza”看起来像是存储了两次,但是对于附加表,它似乎只存储了一次。当然,请假设有 1,000,000 行和 1,000 个唯一字符串,而不是只有 3 行和 2 个唯一字符串。
编辑:我们事先不知道 FavoriteFoods 是什么:它们是用户提供的。字符串表的编程接口(interface)类似于...
String GetString(int ID) { return String at with Row-ID == ID }
int GetID(String s) {
if s exists, return row-id;
else {
Create new row;
return new row id;
}
}
所以字符串表似乎更有效,但现代数据库是否已经在后台执行此操作,所以我可以只使用简单的一张表方法并提高效率?
最佳答案
您衡量效率的依据是什么?假设没有其他数据与每个 FavoriteFood 关联(在这种情况下显然您需要两个表),单表方法可能更省时,因为不必要的连接会产生额外的处理成本。另一方面,双表方法可能更节省空间,因为存储索引比存储字符串占用的空间更少,但这取决于您使用的特定数据库如何优化重复字符串的存储。
关于database - 我应该使用字符串表来提高数据库效率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024048/