比如用户登录支持用绑定的邮箱登录,不是每个用户都绑定了邮箱。那么邮箱应该允许为null然后建立唯一索引好呢,还是设置默认空串,建立普通索引好呢?
另外还想问下唯一索引的范围里是否不包括字段为null的数据?

解决方案 »

  1.   

    允许为null的话,你在建立唯一索引没有意义,按照你的描述,邮箱登录用得较少,那么先统计一下你们系统最常用的是哪种登录方式,在最多执行的登录sql上在加索引,具体索引类型视业务而定
      

  2.   

    如果不需要利用唯一索引来保证唯一性约束,那么就创建普通索引。
    普通索引在定位数据的时候只比唯一索引多了一个节点指针的遍历,两者的查询性能基本可以看成是相等的。
    但是唯一索引会使得MySQL的change buffer失效,也就失去一项优化性能的特性。