所在的位置: mysql >> mysql市场 >> mysql57InnoDB中null值

mysql57InnoDB中null值

有很多人对null值是否走索引感觉很疑惑,这个也要结合那个版本什么引擎来确定,我们现在mysql5.7存储引擎InnoDB(因为这个是当前主流mysql版本)下来做个测试,看看到底情况如何?

开始进行试:

创建表

CREATETABLE`a`(

`id`int(11)NOTNULLAUTO_INCREMENT,

`name`varchar(45)DEFAULTNULL,

`dd`int(11)DEFAULTNULL,

PRIMARYKEY(`id`),

KEY`name`(`name`)

)

插入数据

insertintoa(name)selectnull

多次执行下面语句,将数据量达到十几万级别(数据太少不走索引)

insertintoa(name)

selectuuid_short()froma

执行sql

SELECT*FROMa

wherename=;

执行sql

SELECT*FROMa

wherenameisnull;

结论:

在mysql5.7存储引擎为InnoDB中,我们看到两个sql都是走索引的,并不会因为isnull而不走索引,所以字段为null并不会影响sql走索引。

首先还是建议无论索引列还是其他列,都设置成非null,通过默认值解决null值问题。如果把索引列一些值设置为null,也是允许的,但是写sql时候就要用到isnull和isnotnull来进行筛选数据,这仅仅是语法的需要适配,但并不影响正确的走索引。




转载请注明:http://www.aierlanlan.com/rzdk/1247.html

  • 上一篇文章:
  •   
  • 下一篇文章: