php - MySQL唯一索引的字段为null好不好
怪我咯
怪我咯 2017-04-11 10:37:32
[PHP讨论组]

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
阿神
  1. 不要用null,null会导致索引麻烦(我看的书是高性能MySQL)。判断是否重复。

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号