6.mysql 索引

1. 索引类型

1.1 联合索引

多个字段组个成一个索引,使用时遵循最左原则。

联合索引的查询???

1.2单列索引

1.2.1 普通索引

可重复 空NULL

1.2.2唯一索引

不可重复 可有一个NULL

1.2.3主键索引

不可重复 不可NULL 没有定义自动选择一个索引作为主索引,没有符合条件的默认生成一个。

1.2.4全文索引

文本关键字查找

image-20210416174556647

2. mysql数据落地文件形式

2.1MYISAM

  • Frm:表的定义文件。
  • MYD:数据文件,所有的数据保存在这个文件中。
  • MYI:索引文件。

2.2INNODB

  • Frm文件:表的定义文件。
  • Ibd文件:数据和索引存储文件。数据以主键进行聚集存储,把真正的数据保存在叶子节点中

3.索引数据结构

3.1myisam

img

3.2innodb

img

3.3myisam 与 innodb比较

img MyISAM索引:非聚集索引,数据和索引分开存储。叶子节点data存储记录的页指针,通过页指针将记录所在页从磁盘加载到内存上。 Innodb:聚集索引,主索引和数据放在一起。辅助索引data域中保存主键的值,通过这个值在主索引上找到数据。

3.4 覆盖索引

如果查询的列全部是索引,那么可以直接在索引中查找。避免了读取整行数据,效率更高。

4.不同实现结构的比较

4.1 hashmap

定位快 无法排序 范围查找

4.2 平衡二叉树

数据量大时 树高 每次查询 IO次数多 范围查找排序困难

4.3 B-树

非叶子节点也包含数据。相对于B+树,相同数据下 树高更大。 范围查找,排序能力弱。

4.4 B+树

B+树:所有关键字在叶子节点中 叶子节点串联 并且有序 非叶子节点起到索引的作用 范围查找快.

5.索引优缺点

索引相当于一本书的目录,加快了查找,和排序。缺点由于维护了索引结构,增加了内存消耗,当增删改时需要维护结构,降低了操作的速度。

6. explain sql语句分析

id:表执行顺序。大优先 相同按顺序
type:
All 全表扫描
Index Index表全扫描,与All是读磁盘读比 index是从索引读 ,索引的数据量相对要小
range 索引中范围查找
ref 索引中多值扫描
eq_ref 索引唯一确定了一个值用于主键和唯一键扫描
rows:查找所需扫描的行
key_length:使用的索引列最大字节长度
extra:
using filesort:排序没有使用到索引
using temporary:使用了临时表保存排序结果
using index:使用了覆盖索引

6.索引失效

6.1索引列进行计算

6.2发生隐式类型转换

6.3范围查询右列

6.4null is null or != <> like %

参考文章:

https://www.zhihu.com/question/26113830

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值