MySQL索引

MySQL

索引

介绍

索引是存储引擎快熟找到记录的一种数据结构。索引对于良好的性能尤为关键。索引的作用就相当于目录的作用。

数据结构

B-Tree索引

B 树所有的值都是按顺序存储的,并且每个叶子节点到根的距离相同,从根节点向下搜索,一直到下层的叶子节点。

B树与B+树

B 树节点既存放键(key) 也存放数据(data),而 B+树只有叶子节点存放 key 和 data,其他内节点只存放 key。

B 树的叶子节点都是独立的;B+树的叶子节点有一条引用链指向与它相邻的叶子节点。

B 树的检索的过程相当于对范围内的每个节点的关键字做二分查找,可能还没有到达叶子节点,检索就结束了。而 B+树的检索效率就很稳定了,任何查找都是从根节点到叶子节点的过程,叶子节点的顺序检索很明显。

哈希索引

哈希索引基于哈希表实现,只有精准匹配所有列的查询才有效,时间复杂度能够达到O(1),在MySQL中只有Memory是支持hash索引的

索引的分类

主键索引

数据表的主键列使用的就是主键索引。

前缀索引

有时候索引很长的字符串,会让效率变得地下。可以通过索引部分的字串,这样可以大大节省索引的时间。要选择足够长的前缀以保证较高的选择性,同时又不能太长以便节省空间。为了决定合适的前缀长度,需要找到最常见值的列表,然后和最常见的前缀列表进行匹配

聚簇索引

聚簇索引不是一种单独的索引类型,而是一种数据存储的方式。它的数据实际存储在叶子页当中,一个表只能有一个聚簇索引。

覆盖索引

如果一个索引包含所有要查询的字段的值,就称之为覆盖索引。覆盖索引能够极大的提高性能,使得不需要进行回表的操作。

总结

理解索引如何工作非常重要,合适的索引可以极大的提升效率。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享