MySQL-索引学习笔记(二)

1.3. 索引类型

1.3.1. BTree索引

Innodb中索引使用的是B+Tree数据结构。

BTree 通过所有值是都是按顺序存储的,并且每个叶子页到根的距离是相同。抽象表示如下:

1.3.2. Hash索引

哈希索引基于哈希表实现,只有精确索引所有列的查询才有效。

对于每一行数据,存储引擎都会对所有的索引列计算一个哈希值(hash code),哈希值是一个较小的值,并且不同键值的行计算出来的哈希值不一样。哈希索引将所有的哈希值存储在索引中,同时保存指向每个数据行的指针,这样就可以根据,索引中寻找对于哈希值,然后在根据对应指针,返回到数据行。

mysql中只有memory引擎显式支持哈希索引,innodb是隐式支持哈希索引的。

哈希索引中存储的是:哈希值+数据行指针

哈希索引限制:

如果哈希冲突很多的话,一些索引维护操作的代价也会很高。

因为这些限制,哈希索引只适用于某些特定的场合。而一旦适合哈希索引,则它带来的性能提升将非常显著。

InnoDB引擎有一个特殊的功能叫做“自适应哈希索引”,由Mysql自动管理,不需要DBA人为干预。默认情况下为开启,我们可以通过参数innodb_adaptive_hash_index来禁用此特性。

当InnoDB注意到某些索引值被使用得非常频繁时,它会在内存中基于缓冲池中的B+ Tree索引上再创建一个哈希索引,这样就上B-Tree索引也具有哈希索引的一些优点,比如快速的哈希查找。

l 只能用于等值比较,例如=, <=>,in ;

l 无法用于排序

InnoDB官方文档显示,启用自适应哈希索引后,读和写性能可以提高2倍,对于辅助索引的连接操作,性能可以提高5倍。

1.3.3. 全文索引

全文索引是MyISAM的一个特殊索引类型,它查找的是文本中的关键词,主要用于全文检索。

MySQL InnoDB从5.6开始已经支持全文索引,但InnoDB内部并不支持中文、日文等,因为这些语言没有分隔符。可以使用插件辅助实现中文、日文等的全文索引。

1.3.4. 空间(R-Tree)索引

MyISAM支持空间索引,主要用于地理空间数据类型,例如GEOMETRY。空间索引会从所有维度来索引数据。查询时,可以有效地使用任意维度来组合查询。

1.4. 聚簇索引cluster index

聚簇索引,并不是一种单独的索引类型,而是一种数据存储方式。聚簇索引的数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。

聚簇:表示数据行和相邻的键值紧凑地存储在一起。

一个表只能有一个聚簇索引。

目前,只有solidDB和InnoDB支持聚簇索引,MyISAM不支持聚簇索引。一些DBMS允许用户指定聚簇索引,但是MySQL的存储引擎到目前为止都不支持。

InnoDB的聚簇索引:

(1)InnoDB对主键建立聚簇索引。

(2)如果你不指定主键,InnoDB会用一个具有唯一且非空值的索引来代替。

(3)如果不存在这样的索引,InnoDB会定义一个隐藏的主键(类似rowid),然后对其建立聚簇索引。

InnoDB默认使用聚簇索引来组织数据,如果你用InnoDB,而且不需要特殊的聚簇索引,一个好的做法就是使用代理主键(surrogate key)——独立于你的应用中的数据。最简单的做法就是使用一个AUTO_INCREMENT的列,这会保证记录按照顺序插入,而且能提高使用primary key进行连接的查询的性能。应该尽量避免随机的聚簇主键,例如字符串主键就是一个不好的选择,它使得插入操作变得随机。

一般来说,DBMS都会以聚簇索引的形式来存储实际的数据,它是其它二级索引的基础:

聚簇索引(primary索引):主索引

非聚簇索引(second索引):二级索引

聚簇索引存储结构如下:

1.4.1. 主键索引

主键索引和辅助索引查询过程,如下:

1.5. 覆盖索引

InnoDB存储引擎支持覆盖索引(或称为索引覆盖),即从辅助索引中就可以得到查询的记录,而不需要查询聚集索引中的记录。使用覆盖索引的一个好处是辅助索引不包括整行记录的所有信息,故其大小要远小于聚集索引,因此可以减少大量的IO操作。

1.5.1. 回表

回表指通过辅助索引查询对主键id,再主键id通过聚簇索引进行查询。

展开阅读全文

页面更新:2024-03-08

标签:索引   日文   维度   指针   顺序   性能   操作   引擎   数据   全文

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top