Mysql的底层实现逻辑-数据选用B+树结构存储数据,其中树的每一个节点是一个page页。

从性能⽅⾯来说,由于关系型数据库⼤多采⽤ B+ 树类型的索引,

数据量超过一定大小,B+Tree 索引的高度就会增加,而每增加一层高度,整个索引扫描就会多一次 IO

在数据量超过阈值的情况下,索引深度的增加也将使得磁盘访问的 IO 次数增加,进而导致查询性能的下降

哈希索引

哈希(Hash)一般翻译为散列,也有直接音译成哈希的,就是把任意长度的输入(又叫作预映射,pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。

哈希索引也称为散列索引 HASH 索引MySQL 目前仅有 MEMORY 存储引擎和 HEAP 存储引擎支持这类索引。其中,MEMORY 存储引擎可以支持 B-树索引和 HASH 索引,且将 HASH 当成默认索引。

HASH 索引不是基于树形的数据结构查找数据,而是根据索引列对应的哈希值的方法获取表的记录行。哈希索引的最大特点是访问速度快,但也存在下面的一些缺点:
 

MySQL 需要读取表中索引列的值来参与散列计算,散列计算是一个比较耗时的操作。也就是说,相对于 B-树索引来说,建立哈希索引会耗费更多的时间。

不能使用 HASH 索引排序。

HASH 索引只支持等值比较,如“=”“IN()”或“<=>”。

HASH 索引不支持键的部分匹配,因为在计算 HASH 值的时候是通过整个索引值来计算的

上一篇:超级实用的设计工具CorelDRAW平面设计软件2021精简版下载


下一篇:一步一步学习Java数组访问的技巧-前言