MySQL唯一索引的字段为null好不好

是这样的场景:
用户在注册的时候,可以选择邮箱或者手机号注册
用户名、邮箱、手机号都是唯一的,但是为了简化注册选项,邮箱或者手机号填写一个就可以
这3个字段都是唯一索引,那么声明为not null default ''
超过1个用户用手机注册的时候,就会提示错误,因为重复了
如果声明为允许为null,可以解决上述问题,但是书本上说会不利于查询优化(问题①:真的是这样吗)
那么这种问题该如何处理呢(问题②)

阅读 7k
1 个回答
  1. 不要用null,null会导致索引麻烦(我看的书是高性能MySQL)。判断是否重复。

  2. 建议使用空字符串,加普通索引,然后使用程序。插入记录前,如果用户名、邮箱、手机号有一个不为空,则使用不为空的数据查询数据库,如果重复,报错,否则插入数据。

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