使用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 都不走索引
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)