数据库八股--索引(待持续完善)

mysql执行原理和sql执行顺序

https://zhuanlan.zhihu.com/p/352436463
https://blog.csdn.net/weixin_47043353/article/details/108704323
在这里插入图片描述
连接–缓存–分析(词法、语法分析)–优化–执行–选取存储引擎读取数据

索引基础

建索引的方法
1.什么是索引?
索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据。
2.为什么要建索引?
没有索引,就相当是全文搜索;加了索引B+树或者hash树提高搜索效率
3.什么时候建索引?什么时候不建索引?
https://blog.csdn.net/Merciful_Lion/article/details/124649408?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124649408-blog-105779043.pc_relevant_multi_platform_whitelistv4&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124649408-blog-105779043.pc_relevant_multi_platform_whitelistv4&utm_relevant_index=1
建:
1.一个表的主键、外键
2.需要控制唯一的字段
3.频繁作为查询条件的字段
4.排序的字段
5.DISTINCT时
6.
不建:
1.表记录少
2.不常使用的表
3.更新比较频繁的也不适合加索引 = 区分度低的字段不适合加索引(如性别)4.索引失效场景?
5.什么是联合索引?
6.什么是回表查询

如果语句是 select * from T where k=5,即普通索引查询方式
则需要先搜索 k 索引树,得到 ID 的值为 500,再到 ID 索引树搜索一次,这个过程称为回表查询。
所以一般用主键索引查询
mysql>  select * from T where ID=500;
+-----+---+-------+
| id  | k | name  |
+-----+---+-------+
| 500 | 5 | name5 |
+-----+---+-------+

7.什么是最左匹配原则?
https://blog.csdn.net/qq_35095500/article/details/116936057
(a,b)
a=1 and b=2
b=2 and a=1

(a,b,c,d)
a = 1 and b = 2 and c > 3 and d = 4
当遇到范围查询(>、<、between、like)就会停止匹配。!
全局无序局部有序,范围查询没办法保证局部有序

8.什么是索引覆盖
9.什么是索引下推

索引–类型

1.索引有几种类型?
普通索引: 是最基本的索引,它没有任何限制
唯一索引: 索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一
主键索引: 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。
组合索引: 一个索引包含多个列,实际开发中推荐使用组合索引。
全文索引: 全文搜索的索引。FULLTEXT 用于搜索很长一篇文章的时候,效果最好。只能用于InnoDB或MyISAM表,只能为CHAR、VARCHAR、TEXT列创建。
2.主键索引和唯一索引的区别
主键必唯一,但是唯一索引不一定是主键;
一张表上只能有一个主键,但是可以有一个或多个唯一索引。
3.什么是聚簇索引和非聚簇索引
https://zhuanlan.zhihu.com/p/528069989
聚簇索引:一般指主键索引,主键索引叶子节点存放数据的地址,根据地址找直接对应数据
非聚簇索引:非聚簇索引叶子节点上存储的是id,根据id再去聚集索引上找数据,进行回表查询
4.聚簇索引优缺点?
5.联合索引需要注意什么?

索引–优化

1.索引优化手段?

索引–数据结构

B+树
在这里插入图片描述
1.hash索引和B+树索引的区别?
2.为什么B+树比B树更适合实现数据库索引
B树是一个多路平衡的二叉查找树;红黑树是二路查找,查找层数会多
B树是每个节点都存了数据。
B+树是最下面一层节点存了数据,然后最后一层节点兄弟节点之间有指针相连。
优势:1.查找层数相同,稳定 2.全文检索只需要遍历最后节点 ,不需要层序遍历 3.B+树不存放数据信息,在分片中的排序更加紧密

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值