我遇到以下情况:我想存储数据,表示用户是否关注其他用户。另一个我无法触摸的表存储了用户,其中username
是主键(不幸的是没有id ...)。
事实是,如果一个用户跟随另一个用户,则并不意味着另一个用户跟随第一个用户。
现在,我在这两个代表用户名的varchar上设计了两个varchar's (128)
和一个UNIQUE INDEX
的表。
问题是,我现在需要解析一些旧式系统,我完成了 15%,我已经在这张桌子上有 550k 条目了
指数大于 16MB ,数据 14MB 。
我能做些什么,以更好的方式保存这些数据?如上所述,我不能使用id而不是用户名,因为user-table使用用户名作为主键。
答案 0 :(得分:0)
您可以考虑构建自己的索引表,其中包含ID>用户名。
然后,您可以使用ID来映射关注者。
如果要检索所有数据,这将导致一些额外的开销。
答案 1 :(得分:0)
正如您所注意到的,在所有列上创建单独的索引实质上会强制MySQL复制索引中的所有数据。
您可以创建一个由两个字段组成的unique index
,而不是创建单独的primary key
。 MySQL使用primary key
作为clustered index
,确保在不增加数据库大小的情况下仍然满足您的唯一性约束。