mysql组合索引原理

发布时间: 2023-11-21 11:18 阅读: 文章来源:1MUMB1147PS

专注于Java领域优质技术,欢迎关注

作者: 全菜工程师小辉 文章转自:全菜工程师小辉

前言

MyISAM和InnoDB是MySQL最常用的两个存储引擎,本文将进行详尽的介绍和对比。对于MySQL其余几种存储引擎,请读者自行搜索学习。

本文会图解两种引擎的索引结构区别,然后讲解索引的原理,理解本文内容,就能够理解索引优化的各种原则的背后原因。

限于篇幅,本篇没有介绍的知识,会在后续博客将逐一讲解。例如:MySQL引擎的锁机制、多列索引的生效规则、索引优化等主题。

下面SQL在本篇介绍引擎的结构区别时使用的表结构,便于读者更好理解。

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘唯一码‘,

`age` int(5) NOT NULL COMMENT ‘年龄‘,

`name` varchar(5) NOT NULL COMMENT ‘名字‘,

PRIMARY KEY (`id`),

KEY `name` (`name`)

) ENGINE=InnoDB AUTO_INCREMENT=92 DEFAULT

B-树、B树和B-tree是同一个数据结构,只不过英语翻译过来之后,有些人误解了以为是多种树。所以好多讲解树的数据结构的博客完全是误导初学者。。。请读者认真分辨。

MyISAM和InnoDB的索引均采用B+树数据结构,所以接下来先介绍一下B树与B+树。

B树与B+树

B树

B树是一种多路搜索树。

定义任意非叶子结点最多只有M个儿子,且M>2。根结点的儿子数为[2, M]。除根结点以外的非叶子结点的儿子数为[M/2, M]。每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)。非叶子结点的关键字个数=指向儿子的指针个数-1。非叶子结点的关键字:K[1], K[2], …, K[M-1],且K[i]
•••展开全文
相关文章