OneToMany关系占用更多数据库空间

时间:2012-02-04 13:54:41

标签: mysql database-design

我们重新考虑了用户特定的配置 create table user (id, name, ..., config1, config2, config3, ..)

create table user (id, name, ...);
create table user_config (id, user_id, config_val);

进行此更改并将用户从旧表迁移到较新的表后,我们的MySQL数据库大小增加了2倍。我们这样做是为了使用户配置可以扩展,但为什么空间要求因此而上升。可能是什么原因。

1 个答案:

答案 0 :(得分:1)

如果你有一个包含20个字段和1,000,000个用户的oritinal表,那就是20 * 1,000,000 = 20,000,000个数据项。

例如,假设您现在拥有相同数量的用户,但将表减少到10个字段,并且有10个配置行,每个配置行包含三个字段(根据您的代码)。这将是10 * 1,000,000 + 10 * 3 * 1,000,000 = 50,000,000。这将是2.5的一个因素。

因此,基本上,对于每个配置变量,您现在都添加了一个id(主键)和一个用户(外键)字段。除此之外,现在还有更多的索引数据需要生成。

因此,很可能是您的数据要求急剧增加。