首页 > 数据库 > MySQL > 正文

Mysql 索引结构直观图解介绍

2024-07-24 12:53:06
字体:
来源:转载
供稿:网友

一.模拟创建原始数据 下图中,左边是自己方便说明,模拟的数据。引擎为mysiam~ 右边是用EXCEL把它们随机排列后的一个正常仿真数据表,把主键按照1-27再排列(不随机的话我在模拟数据时本来就是按顺序写的,再加索引看不大出这个索引排序的过程) 也就是说右边的数据,使我们要测试的原始数据,没建索引前是这样排序的,后边所有的数据都是以这个为依准进行的,这样更好看索引生成后的排序效果。 该表有4个字段(id,a,b,c),共21行数据

二.创建索引 a 如下图,当创建索引a以后,在该索引结构中,从原来的按照主键ID排序,变成了新的规则,我们说索引其实就是一个数据结构。则建立索引a,就是新另建立一个结构,排序按照字段a规则排序,第一条为主键ID为1代表的数据行,第二条ID=3的数据行,第三条ID=5代表的数据行。。。

/

新排序主键ID(以ID代表他们这行的数据):1 3 5 6 9 16 18 23 26 2 10 11 12 13 14 15 20 25 4 7 8 17 19 21 22 24 27 不难发现,当字段a相同时,他们的排列 前后主键ID来排,比如同样是a=1.1的值,但是他们的排序是ID值为1,3,5,6。。对应的行,和主键ID排序顺序相近。

三.创建索引 (a,b) 如下图,当创建联合索引(a,b)以后,在该索引结构中,从原来的按照主键ID排序,变成了新的规则,排序规则先按照字段a排序,在a的基础上在按照字段b排序。即在索引a的基础上,对字段b也进行了排序。

/

新排序主键ID(以ID代表他们这行的数据):6 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21 不难发现,当字段a,b值都相同时,他们的排列前后,也是由主键ID决定的,比如同样是a=1.1,b=2.1的行(18,6,23),但是他们的排序是6,18,23。 字段(a,b)索引,先按a索引排序,然后在a的基础上,按照b排序 6 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21

四.创建索引 (a,b,c)

字段(a,b,c)索引,先按a,b索引排序,然后在(a,b)的基础上,按照c排序

/

新排序主键ID(以ID代表他们这行的数据):23 6 18 15 20 10 27 22 7 1 26 3 11 2 25 24 4 8 5 16 9 12 14 13 17 19 21

五.结论:

/
/
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表