笔记:MySQL的索引类型

索引(在mysql中也叫做“键(key)”)是存储引擎用于快速找到记录的一种数据结构。

  • 索引的类型
    索引有很多种类型,可以为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层而不是服务器层实现的。所有,并没有统一的索引标准:不同存储引擎的索引的工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。
  1. B-Tree索引
    当人们谈论索引的时候,如果没有特别指明类型,那多半说的是B-Tree索引,
它使用B-Tree数据结构来存储数据。大多数MySQL引擎都支持这种索引。Archive
引擎是一个例外:5.1之前Archive不支持任何索引,知道5.1才开始支持单个自增列
(AUTO_INCREMENT)的索引。	
    B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。
    B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取
需要的数据,取而代之的是从索引的根节点开始进行搜索。根节点的槽中存放了指向
子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值
可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和
下限。最终存储引擎要么是找到对应的值,要么该记录不存在。
    B-Tree对索引列是顺序组织存储的,所以很适合查找范围数据。
  1. 哈希索引
   哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。
对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是
一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码
存储在索引中,同时在哈希表中保存指向每个数据行的指针。
   在MySQL中,只有Memory引擎显式支持哈希索引。这也是Memory引擎表的默认索引类型,
Memory引擎同时也支持B-Tree索引。
  1. 空间数据索引(R-Tree)
   MyISAM表支持空间索引,可以用作地理数据存储。和B-Tree索引不同,这类索引
无须前缀查询。空间索引会从所有维度来索引数据。
  1. 全文索引
   全文索引是一种特殊类型的索引,它查找的是文本中的关键词,而不是直接比较索引中的
值。全文搜索和其他几类索引的匹配方式完全不一样。它有许多需要注意的细节,如停用词、
词干和复数、布尔搜索等。全文索引更类似于搜索引擎做的事情,而不是简单的WHERE条件
匹配。
  1. 其他索引类别
   还有很多第三方的存储引擎使用不同类型的数据结构来存储索引。例如:TokuDB使用
分形树索引(fractal tree index),这是一类教新开发的数据结构,既有B-Tree的
很多优点,也避免了B-Tree的一些缺点。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值