MySQL中,IS NULL和IS NOT NULL不会走索引?错!
最近写了一系列关于MySQL索引相关的中走索文章,帮大家系统全面地把索引这块的引错知识丰富串联起来,需要回顾或学习这方面的中走索知识的朋友可以看看前面的文章。
今天这篇文章给大家分析和示例一下,引错MySQL中,IT技术网中走索当查询条件为IS NULL或 IS NOT NULL时,引错哪些情况会走索引,中走索哪些情况下又不会走索引。引错最终结论可能与大家的中走索直觉有所不同。

下面我们直接通过具体的引错实例来看看当查询条件为IS NULL或 IS NOT NULL时,索引的中走索使用情况。高防服务器
实例一:少量数据,引错使用索引
这里采用的中走索MySQL数据库版本为8.0.18,后续实例均采用此版本。引错
创建一个test表,中走索创建语句如下:
CREATE TABLEtest ( idINT PRIMARY KEY, col1 INT, col2 INT, INDEX idx_col1 (col1) ); -- 添加两条数据 insertintotestvalues(1,null,1); insertintotestvalues(2,null,2);其中在col1列上创建了索引。
实例演示
此时,我们来看IS NULL和 IS NOT NULL是否走索引。服务器租用
mysql> explain SELECT * FROMtestWHERE col1 ISNULL \G