10亿的mysql的用户表该如何分表?

面试被问到了一个分表问题,有一个用户表如下:
user(id,name,age,email,pwd,phone);
表里面有10亿条数据,要求用户能通过email和phone 两种方式登录,该如何分表?

阅读 5.2k
1 个回答

我想了一种思路,不知是否可行。
再独立出来两个表,用做索引。

|hash_email  |id    |

|hash_phone  |id    |

这样,原表可以按照id来做hash。两个新表的话,分别按照emailphone来做hash。

查找的话,先按照emailphone来做hash,找到对应的id,然后根据id再去找用户信息。

但是这样的话,修改数据就可能有些费时了。
总之,根据耗时守恒定理来说,这个地方省的事,肯定要在其他地方还的?~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题