mysql索引

一 索引的原理和效率

原理: 索引是对常用字段建立指针列表(指针为数据记录存储的物理地址),减少磁盘I/O,并使用树结构存储这些指针来提升查找效率.


效率: 顺序查找的时间复杂度为O(N),二分查找的时间复杂度为O(log2N),块查找(索引)的效率介于二者之间.


举个例子,对于100万行不同记录的表,顺序查找的平均比较次数为50万次(N/2),而二分查找的为20次(实际略多一些),效率提升极大.



二 通过EXPLAIN查看执行计划, 检查索引是否被正确使用

方法: EXPLAIN sql语句


会得到如下的执行计划

主要参数的解释如下:

 type: 连接使用了何种类型, 效率从高到低 const > eq_reg > ref > range > index > ALL

  const 为常数级, 为使用唯一键主键时(等于=)

  eq_reg 为范围使用主键唯一索引时(范围in,如果使用不等比较,需要为开区间或半开区间, 不可使用<=的闭区间,否则为ALL)

  ref 为严格使用索引时(等于=, 多列索引时从第一个索引字段开始按建索引的顺序使用,这是由于索引使用树结构的缘故,分支查找不可逆)

 range 为范围时用索引时(范围使用方法同eq_reg)

 index索引扫描(多列索引时未从第一个索引字段开始)

 ALL 没有用到索引,类似顺序查找


possible_keys: 可能应用的索引

key: 实际用到的索引

key_len: 索引长度,越短越好

ref: 索引的字段是如何被使用的,一般为常量const

rows: 所扫的行数


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值