概述
是什么
- 索引像是一本书的目录列表,能根据目录快速的找到具体的书本内容,也就是加快了数据库的查询速度
- 索引本质是一个数据结构
- 索引是在存储引擎层,而不是服务器层实现的,所以,并没有统一的索引标准,不同存储引擎的索引的工作方式不同,也不是所有的存储引擎都支持所有类型的索引,即使多个存储引擎支持同一种类型的索引,其底层实现也可能不同————《高性能mysql》
优劣势
优点:
- 提高数据检索的效率,降低了数据库的IO成本
- 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗
- 被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只是组合索引的排序要复杂一些
缺点
- 索引会占用磁盘空间
- 索引虽然提高了查询的效率,但是会影响增删改的效率,因为每次增删改数据时,数据库要同时更新维护索引的结构
数据结构
索引是存储引擎层面实现的,所以不同的存储引擎使用的索引数据结构也不同,底层结构主要是B+树和哈希两种

hash索引
基于哈希表实现的,对选中的索引列计算出一个哈希码,在哈希表存储的是哈希码以及指向每个数据行的指针(在mysql中,只有memory存储引擎支持哈希索引,且是memory的默认索引方式)
优点: 查找的速度非常快(只需存储对应的哈希值,所以索引的结构十分紧凑)
缺点:
- 不能避免读取行。哈希表中只包含哈希值和行指针,而不存储字段值
- 无法用于排序。哈希表的索引数据并不是按照索引列匹配查找的
- 不支持部分索引列匹配查找。因为哈希索引始终是使用索引列的全部内容来计算哈希值的。

最低0.47元/天 解锁文章
3284

被折叠的 条评论
为什么被折叠?



