首页 资讯 社群 我的社区 搜索

mysql中的null和索引

高大上
2018-10-11 16:16:02

先上结论:

        1.字段添加了非空约束时where 后面的 is null 和is not null 都不会走索引,及索引失效。未添加not null约束时,两种条件都是走索引的,而且效率还挺高的!

        2.字段尽量不要使用null值,可以考虑使用0或者其他简单字符填充。

---------------------------------------------------------------------------------------------------------

        网上有很多帖子说查询中有null的判断则索引失效,其实和字段的not null有关系!

        不过要尽可能地把字段定义为 NOT NULL,即使应用程序无须保存值。有很多列为null只是因为null是默认选项,并非它真的要保存null。

        当可空列被索引时,每条记录都需要消耗一个额外的字节,由此导致原本定长的索引变为可变大小的索引(MyISAM)中。MySQL难以优化引用了可空列的查询,它会使索引、索引统计和值更加复杂。不单是需要更多的空间,还需要在MySQL内部进行特殊处理。具体怎么处理的,我还没看到~~~我们知道哪些是需要绕开的坑就可以了~

用户评论