mysql基本索引类型

mysql基本索引类型

索引列表:

•B+Tree索引•Hash索引•full-text索引•R-Tree索引

B+Tree索引

我们经常使用的MyISAM 和 InnoDB 存储引擎,采用的都是B+Tree索引.和B-Tree相比,B+Tree的所有数据都放在了 叶子节点,并且为了加快相邻数据的检索效率,会把叶子节点连成数据链表. 说到B+Tree我们需要先了解下B-Tree的结构.B-Tree是为磁盘等外存储设备设计的一种平衡查找树.

一棵m阶的B-Tree有如下特性:

•每个节点最多有m个孩子•除了根节点和叶子节点外,其它每个节点至少有Ceil(m/2)个孩子。•若根节点不是叶子节点,则至少有2个孩子•所有叶子节点都在同一层,且不包含其它关键字信息•每个非终端节点包含n个关键字信息(P0,P1,…Pn, k1,…kn)•关键字的个数n满足:ceil(m/2)-1 <= n <= m-1•ki(i=1,…n)为关键字,且关键字升序排序•Pi(i=1,…n)为指向子树根节点的指针。P(i-1)指向的子树的所有节点关键字均小于ki,但都大于k(i-1)

关键信息:

•键值 :记录中的主键•数据 :除主键外的其它数据•指针 :存储子节点地址信息

而B+Tree是在B-Tree的基础上做了一些优化. 优化的内容:

•所有的叶子节点之间都有一个链指针•所有的数据都存在叶子节点(跟节点)

Hash索引

通过hash算法将不定长的数据转化成固定长度的hash值.将hash值和对应数据的行指针一并存入hash表. MySQL目前有Memory引擎和NDB引擎支持Hash索引.

full-text索引

full-text是Myisam的一种特殊索引,主要用于全文索引. full-text可以用来替代效率较低的LIKE检索,而且可以对多字段组合一次性模糊查询. 同样使用B-Tree存放索引,区别在于full-text索引会将数据先进行切割,然后对切割后的数据进行索引.

R-Tree空间索引

空间索引是MyISAM的一种特殊索引类型,主要用于地理空间数据类型

常见问题

为什么使用B+ 而不是B Tree?

B树高度更高,B+树叶子节点链表.

为什么不使用hash索引?

没有顺序无法进行范围查询

更多

网站建设、跨端小程序开发、爬虫开发、app开发
联系我们:

  • 微信:hzspr2021
  • 公众号:杭州师薄零网络

猜你喜欢

转载自blog.csdn.net/coffiasd/article/details/118970858