欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

日常记录——MySQL—sql执行过程、索引结构、索引类型

程序员文章站 2022-07-05 23:34:11
一、sql执行过程二、索引结构索引存储在磁盘,磁盘每次读取页的整数倍(4k一页),数据量大会造成多次IO,所以尽量在创建索引的时候,在同样大小情况下,存储更多的索引。MySQL的索引结构为B+Tree:每个非叶子节点存储子节点磁盘指针和主键,存储更多的索引,降低IO次数,叶子节点存储磁盘指针和实际数据或者主键的值(InnoDB)或者数据的指针(MyISAM),并且叶子节点之间是链式环结构。即可满足随机查找和范围查找。为什么不使用其他结构:1.hash表:散列结构,范围查找效率低。2.二叉树...

一、sql执行过程

日常记录——MySQL—sql执行过程、索引结构、索引类型

二、索引结构

索引存储在磁盘,磁盘每次读取页的整数倍(4k一页),数据量大会造成多次IO,所以尽量在创建索引的时候,在同样大小情况下,存储更多的索引。
MySQL的索引结构为B+Tree:每个非叶子节点存储子节点磁盘指针和主键,存储更多的索引,降低IO次数,叶子节点存储磁盘指针和实际数据或者主键的值(InnoDB)或者数据的指针(MyISAM),并且叶子节点之间是链式环结构。即可满足随机查找和范围查找。
日常记录——MySQL—sql执行过程、索引结构、索引类型

为什么不使用其他结构:
1.hash表:散列结构,范围查找效率低。
日常记录——MySQL—sql执行过程、索引结构、索引类型

2.二叉树:容易造成单链表结构,效率反而降低。
日常记录——MySQL—sql执行过程、索引结构、索引类型

3.平衡二叉树:最高子树和最低子树高度不能超过1,插入数据效率低,为了平衡,会进行旋转操作。
日常记录——MySQL—sql执行过程、索引结构、索引类型
4.红黑树:最高子树和最低子树高度不能大于2倍,平衡二叉树的升级,插入速度优化,但树高度不可控,增加磁盘IO次数,降低效率。
5.B-树:数据和内存地址存放一起,数据大小无法确定,数据过大造成,会增加树的深度,增加磁盘IO次数,降低性能。
日常记录——MySQL—sql执行过程、索引结构、索引类型

三、索引类型

1.主键索引:类型为主键的唯一索引,每个表只有一个。最好设置主键自增,防止页分裂、合并降低效率。
2.唯一索引:索引列值只可以出现一次,可以有null。
3.普通索引:加速查询,可以有null。
4.覆盖索引:非主键索引存储的是主键的值,拿到主键值后再去主键索引查询数据,如果一个sql只需要查询主键列数据,则会产生覆盖索引。
5.全文索引:MyISAM支持,5.6后InnoDB也支持,对文本的内容(varchar,char,text)进行分词,进行搜索。
6.前缀索引:索引开始的部分字符,字符串过长会造成索引慢且文件大。
7.组合索引:多列值组成一个索引,用于组合搜索,遵循最左匹配原则。
*索引下推:回表前根据条件进行筛选主键值

本文地址:https://blog.csdn.net/weixin_43001336/article/details/107644124