侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

MySQL中的B-Tree索引

2024-02-22 星期四 / 0 评论 / 0 点赞 / 26 阅读 / 1783 字

索引类型在MySQL中,索引是在存储引擎层而不是服务器层实现的,故而没有统一的引擎标准:即同一种索引在不同存储器上的实现可能不一样。B-Tree索引:当人们谈论索引的时候,如果没有特别指出,多半讲的就

索引类型


在MySQL中,索引是在存储引擎层而不是服务器层实现的,故而没有统一的引擎标准:即同一种索引在不同存储器上的实现可能不一样。

B-Tree索引:

当人们谈论索引的时候,如果没有特别指出,多半讲的就是B-Tree索引。B-Tree意味着所有的值都是按顺序存储的,并且每一个叶子到根的距离相同。下图表反应了InnoDB的B-tree索引如何工作。

假如有以下表:

CREATE TABLE People (	last_name	varchar(50)		not null,	first_name	varchar(50)		not null,	dob		date			not null,	gender		enum('m', 'f')		not null,	key(last_name, first_name, dob));

对于表中的每条数据,索引如下

索引对多个值进行排序的依据是create table语句中定义索引时列的顺序。

B-Tree通常可以支持“只访问索引查询”,无需访问数据行。

因为索引树中的节点是有序的,所以除了按值查找之外,索引还可以用于查询中的order by操作。

T-Tree索引的限制:

  • 如果不是按照索引的最左列开始查找,则无法使用索引。如上表中不能查找特定生日的人。
  • 不能跳过索引中的列。如果不指定first_name,则MySQL只能使用索引的第一列。
  • 如果查寻中有某个列的范围(模糊)查询,则其右边所有列都无法使用索引优化查找。

广告 广告

评论区