MySQL优化及底层数据结构

MySQL索引数据结构+优化

1、B+Tree底层原理:

1.1 B+Tree
B+Tree非叶子节点不存data。
B+Tree叶子节点是冗余的,因为需要去支持范围查询。
B+Tree存联合索引必须按照存索引的顺序去存取。
1.2 HASH
HASH插入数据是走一次io操作,存的是磁盘上的文件地址。
HASH取数据是作了一次HASH操作。可以很快的找到需要的数据,只经过一次io操作。但是不支持范围查询。
1.3 B+Tree数据结构视图
在这里插入图片描述

2、EXPLAIN关键字

2.1EXPLAIN关键字是查看SQL语句where条件的执行计划。
联合MySQL底层数据结构来理解。
Explain关键字详解:
链接:https://pan.baidu.com/s/17kYO7qJg0ue9knQ1XGxOMA
提取码:t4qg

2.2 SQL优化注意事项
SQL语句不要存在范围查询,函数操作,以及使用联合索引时需要按照最左前缀的原则,就是查询语句的where条件,顺序要按照你创建联合索引的创建顺序来查询。字符串不加“ ’ ”单引号会索引失效。
2.3 覆盖索引
覆盖索引就是你查找的字段都存放于索引中。
2.4 范围查询优化
如果要使用范围查询可以使用覆盖索引实现,如Like “%条件%"。当然在生产环境中,全部字段加索引是不现实,所以我们可以使用搜索引擎,如solr。

3、数据结构模拟网站

3.1 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

4、innodb存储引擎索引实现(聚集)

4.1 表中数据文件本身就是按照B+Tree组织的一个索引结构文件
4.2 聚集索引叶子节点包含了完整的数据(data)

4.3 innodb表必须有主键,并且推荐使用整形的自增主键如(int,bigint),如果没有的话MySQL会给你自动生成一个主键索引(隐藏的)**
在这里插入图片描述

5、MySAM存储引擎索引实现(非聚集)

5.1MySAM的数据结构和数据文件是分开存放的。其次MySAM存放数据其实是存放的内存地址指针(如下图)

在这里插入图片描述

原创文章 2 获赞 1 访问量 185

猜你喜欢

转载自blog.csdn.net/qq_21751633/article/details/105827180