前言
看了很多博客,也听过很多人说,包括我们公司的DBA,说MySql中如果某一列中含有null,那么包含该列的索引就无效了。
翻了下《高性能MySQL第二版》和《MySQL技术内幕——InnoDB存储引擎第2版》,并没有看到关于这个的介绍。但在本地试了下,null列是可以用到索引的,不管是单列索引还是联合索引,但仅限于is null,is not null是不走索引的。
后来在官方文档中找到了说明,如果某列字段中包含null,确实是可以使用索引的,地址:https://dev.mysql.com/doc/refman/5.7/en/is-null-optimization.html。
在 SQL 中,NULL 用于表示缺少值或未知值。它可以被认为是一个空值或占位符,表示该值未被确定或未被提供。在 SQL 查询中,NULL 值可能会对结果产生影响,因此需要特别注意处理 NULL 值。例如,在使用 WHERE 子句时,使用 IS NULL 或 IS NOT NULL 来检查 NULL 值。