在MySQL中is null, is not null对索引的影响【测试】

在MySQL中is null, is not null对索引的影响【测试】,第1张

一、索引字段不为null

使用select *查询

select * from a_user where name is null

查询索引字段

select name from a_user where name is null

select name from a_user where name is not null

结果

select name from a_user where name is null未使用索引;

select name from a_user where name is not null使用索引;

多字段查询(索引字段+非索引字段)

select name,sex from a_user where name is null

select name,sex from a_user where name is not null

结果

select name,sex from a_user where name is null未使用索引;

select name,sex from a_user where name is not null未使用索引;

二、索引字段为null 时

使用select *查询

select * from b_user where name is null

select * from b_user where name is not null

结果:

select * from b_user where name is null使用索引

select * from b_user where name is not null未使用索引

查询索引字段

select name from b_user where name is null

select name from b_user where name is not null

结果:

select name from b_user where name is null使用索引

select name from b_user where name is not null使用索引

多字段查询(索引字段+非索引字段)

select name,sex from b_user where name is null

select name,sex from b_user where name is not null

结果:

select name,sex from b_user where name is null使用索引

select name,sex from b_user where name is not null未使用索引

总结以上测试:

1、当索引字段不为null 时,只有使用is not null 返回的结果集中只包含索引字段时,才使用索引;

2、当索引字段为null时候,使用 is null 不影响覆盖索引,但是使用 is not null 只有完全返回索引字段时才会使用索引

例子1

例子 2

例子1

例子2

综述: 字段属性为null 时, where 条件中 is not null 和 is null 都走索引 (前提有建索引)(除了数据差异性太大除外)

   综述  字段属性为not null 时,where 条件中 is not null  和 is null 都不走索引


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5908044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存