mysql强烈建议不要使用Null

    xiaoxiao2023-11-26  155

    Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要mysql内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MyISAM中固定大小的索引变成可变大小的索引。

     

    mysql不使用null的原因

    (1)所有使用NULL值都可以通过一个有意义的值表示,这样也有利代码的可读性和可维护性,并能从约束上增强业务数据的规范性。

    (2)NULL值到非NULL值的更新无法做到原地更新,更容易发生索引分裂,从而影响性能。

    (3)not in、!=查询在有NULL值的情况下返回永远为空结果,查询容易出错。

    select * from tableA where xxx not in(1, 2, null)           返回空结果

    select * from tableA where xxx!=‘abc'                           返回结果不包括xxx为null值

    select concat("1", null) from dual;                                  只要任意一个字段为null都会造成拼接的字符为null

    select count(*) from tableA;                                           null不参与统计

    注意null字段的判断方式,=null将会得到错误的结果。                                                                          

     

    (4)Null列需要更多的存储空间:需要一个额外字节作为判断是否为Null的标志位

     

     

     

    最新回复(0)