mysql索引失效的情形

本文总结了MySQL索引可能失效的情况,包括:数据行超出表记录数30%导致全表扫描,索引列存在NULL值,使用函数或运算,使用<>、NOT IN操作符,复合索引部分无效,非最左索引列查询,模糊查询以%开头,内存表使用HASH索引的范围检索,字段类型不一致等。同时,文章也简述了索引的优缺点,如减少扫描数据量、避免排序,以及占用磁盘空间和降低DML性能等。
摘要由CSDN通过智能技术生成

   最近学习MYSQL,关于索引失效的情形总结如下:

  • 请求表上的数据行超出表总记录数30%,变成全表扫描
  • 谓词上的索引列上存在NULL值
  • 谓词上的索引列条件使用函数
  • 谓词上的索引列条件进行了相关运算
  • 谓词上的索引列条件上使用了<>,NOT IN操作符
  • 复合索引中,第一个索引列使用范围查询--只能用到部份或无法使用索引
  • 复合索引中,第一个查询条件不是最左索引列
  • 模糊查询条件列最左以通配符%开始
  • 内存表(HEAP表)使用HASH索引时,使用范围检索或者ORDER BY
  • 表关联字段类型不一样(包括某些长度不一样,但像varchar(10)与char(10)则可以,MYSQL经过内部优化处理)

 

索引类型(按用途非严格划分)

  • 普通索引,这是最基本的索引,无任何限制
  • 唯一索引,与普通索引类似,索引列值必须唯一,允许NULL值
  • 全文索引,基于词干方式创建索引,多用于BLOB数据类型
  • 单列索引,仅基于一列创建的索引
  • 多列索引,基于多列创建的索引,列顺序非常重要
  • 空间索引,用作地理数据存储
  • 主键索引,是一种特殊的唯一索引,
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值