在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一.索引不存储null值 更准确的说,单列索引不存储null值,复合索引不存储全为null的值。索引不能存储Null,所以对这列采用is null条件时,因为索引上根本 二.不适合键值较少的列(重复数据较多的列) 假如索引列TYPE有5个键值,如果有1万条数据,那么 WHERE TYPE = 1将访问表中的2000个数据块。 三.前导模糊查询不能利用索引(like '%XX'或者like '%XX%') 假如有这样一列code的值为'AAA','AAB','BAA','BAB' ,如果where code like '%AB'条件,由于前面是 四.索引失效的几种情况 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) select * from tb1 where nid = 1 or name = '[email protected]'; --特别的:当or条件中有未建立索引的列才失效,以下会走索引 select * from tb1 where nid = 1 or name = 'seven'; select * from tb1 where nid = 1 or name = '[email protected]' and email = 'alex' 2.对于多列索引,不是使用的第一部分,则不会使用索引 3.like查询以%开头 select * from tb1 where email like '%cn'; 4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引 elect * from tb1 where email = 999; 5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引 6.普通索引的不等于不会走索引 - != select * from tb1 where email != 'alex' --特别的:如果是主键,则还是会走索引 select * from tb1 where nid != 123 - > select * from tb1 where email > 'alex' --特别的:如果是主键或索引是整数类型,则还是会走索引 select * from tb1 where nid > 123 select * from tb1 where num > 123 7.组合索引最左前缀 如果组合索引为:(name,email) name and email -- 使用索引 以上就是MySQL索引失效的几种情况汇总的详细内容,更多关于MySQL索引失效的资料请关注极客世界其它相关文章! |
请发表评论