mysql索引

随着对mysql的使用越来越多,索引这个东西已经是必须要了解的了,所以在此记录一下学习心得,如有误解的地方还请多多指正

1.为什么使用索引

  1. 使用索引大大的减少了存储引擎需要扫描的数据量
  2. 减少排序,避免使用临时表
  3. 把随机I/O变成顺序I/O

2.索引类型

B-tree索引

特点
  1. 以B+树的结构存储数据
  2. 加快数据的查询速度
  3. 适合进行范围查找
使用情况
  1. 全值匹配的查询
  2. 匹配最左前缀的查询
  3. 匹配列前缀查询
  4. 匹配范围值查询
  5. 精确匹配做前列并范围匹配另外一列
  6. 只访问索引的查询
使用限制
  1. 不按照索引最左列开始查找
  2. 跳过索引中左边的列
  3. 使用Not in和in是用不到索引的
  4. 查询某个列的范围查询,则用不到其余列用不到索引

Hash索引

特点
  1. 基于Hash表实现
  2. 只有查询条件精确匹配Hash索引中所有的列时才能使用Hash索引
  3. 存储引擎会为Hash索引的每一列都计算一个Hash码
使用限制
  1. 必须进行二次查找(因为是以键值对的形式存储的,先查询键再查询值)
  2. 无法用于排序
  3. 不支持部分索引和范围查询
  4. Hash码可能存在冲突

3索引的不足

  1. 增加写操作的成本
  2. 增加查询优化器的选择时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值