是这样的场景:
用户在注册的时候,可以选择邮箱或者手机号注册
用户名、邮箱、手机号都是唯一的,但是为了简化注册选项,邮箱或者手机号填写一个就可以
这3个字段都是唯一索引,那么声明为not null default ''
超过1个用户用手机注册的时候,就会提示错误,因为重复了
如果声明为允许为null,可以解决上述问题,但是书本上说会不利于查询优化(问题①:真的是这样吗)
那么这种问题该如何处理呢(问题②)
是这样的场景:
用户在注册的时候,可以选择邮箱或者手机号注册
用户名、邮箱、手机号都是唯一的,但是为了简化注册选项,邮箱或者手机号填写一个就可以
这3个字段都是唯一索引,那么声明为not null default ''
超过1个用户用手机注册的时候,就会提示错误,因为重复了
如果声明为允许为null,可以解决上述问题,但是书本上说会不利于查询优化(问题①:真的是这样吗)
那么这种问题该如何处理呢(问题②)
2 回答2.5k 阅读✓ 已解决
5 回答1.5k 阅读
2 回答1.1k 阅读✓ 已解决
2 回答2.2k 阅读
3 回答2.1k 阅读
4 回答1.4k 阅读
1 回答1.5k 阅读✓ 已解决
不要用null,null会导致索引麻烦(我看的书是高性能MySQL)。判断是否重复。
建议使用空字符串,加普通索引,然后使用程序。插入记录前,如果用户名、邮箱、手机号有一个不为空,则使用不为空的数据查询数据库,如果重复,报错,否则插入数据。