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