存储表中用户的关注

时间:2012-02-10 08:18:16

标签: mysql database

我遇到以下情况:我想存储数据,表示用户是否关注其他用户。另一个我无法触摸的表存储了用户,其中username是主键(不幸的是没有id ...)。

事实是,如果一个用户跟随另一个用户,则并不意味着另一个用户跟随第一个用户。

现在,我在这两个代表用户名的varchar上设计了两个varchar's (128)和一个UNIQUE INDEX的表。

问题是,我现在需要解析一些旧式系统,我完成了 15%,我已经在这张桌子上有 550k 条目了

指数大于 16MB ,数据 14MB

我能做些什么,以更好的方式保存这些数据?如上所述,我不能使用id而不是用户名,因为user-table使用用户名作为主键。

2 个答案:

答案 0 :(得分:0)

您可以考虑构建自己的索引表,其中包含ID>用户名。

然后,您可以使用ID来映射关注者。

如果要检索所有数据,这将导致一些额外的开销。

答案 1 :(得分:0)

正如您所注意到的,在所有列上创建单独的索引实质上会强制MySQL复制索引中的所有数据。

您可以创建一个由两个字段组成的unique index,而不是创建单独的primary key。 MySQL使用primary key作为clustered index,确保在不增加数据库大小的情况下仍然满足您的唯一性约束。