谈谈Mysql之索引类别

B-Tree索引

B-Tree索引的适用场景

  1. 全值匹配
  2. 列表内容
  3. 匹配最左前缀
  4. 匹配列前缀
  5. 匹配范围值
  6. 精确匹配某一列并范围匹配另一列
  7. 只访问索引的查询

B-Tree索引的限制场景

  1. 如果不是按照索引的最左列进行查找,那么无法使用索引
  2. 不能跳过索引的列
  3. 列表内容
  4. 如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查询

哈希索引(自定义哈希索引)

哈希索引的使用场景

  1. 精确匹配索引所有列的查询才有效

哈希索引的限制场景

  1. 哈希索引只包含哈希值和行指针,不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中行的速度很快,所以大部分情况下这一点对性能的影响并不明显。
  2. 哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。
  3. 哈希索引也不支持部分索引列匹配查找。
  4. 哈希索引只支持等值比较查询,包括:=,IN(),<=>(注意<>和<=>是不同的操作),也不支持任何范围查询,比如:WHERE PRICE > 100。
  5. 访问哈希索引的数据非常快,除非有很多的哈希冲突(不同的索引列值却有相同的哈希值)。当出现哈希冲突的时候,存储引擎必须遍历链表中的所有行指针,逐行进行比较,直到找到所有符合条件的行。
  6. 如果哈希冲突很多的话,一些索引维护操作的代价也会很高。例如:如果在某个选择性很低的列上建立哈希索引,那么当从表中删除一行时,存储引擎需要遍历对应哈希值的链表中的每一行,找到并删除对应行的引用,冲突越多,代价越大。

其他索引

  1. 空间数据索引(R-Tree)
  2. 全文索引
  3. 分形树索引
  4. 聚簇索引
  5. 覆盖索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值