什么是索引(面试题)

1.什么是索引,了解过索引吗?

1.索引(index)是帮助MYSQL高效获取数据的数据结构(有序)

2.提高数据检索的效率,降低数据库的IO成本(不需要全表扫描)

3.通过索引列队数据进行排序,降低数据排序的成本,降低了CPU的消耗

2.索引的底层数据结构了解过吗?

MYSQL的InnoDB引擎采用的B+树的数据结构

1.阶数更多,路径更短

2.磁盘读写代价B+树更低,非叶子结点只存储指针,叶子阶段存储数据

3.B+树便于扫库和区间查询,叶子结点是一个双向链表

 3.什么是聚簇索引  什么是非聚簇索引?

1.聚簇索引(聚集索引):

数据与索引放在一块,B+树的叶子结点保存了整行数据,有且仅有一个

2.非聚簇索引(二级索引):

数据与索引分开存储,B+树的叶子结点保存对应的主键,可以有多个

4.知道什么是回表查询吗?

通过二级索引找到对应的主键值,到聚集索引中查找整行数据,这个过程就是回表 

5.那这个SQL语句执行很慢,如何分析呢?

可以采用MYSQL自带的分析工具 explain

1.通过key和key_len检查是否命中了索引(索引本身存在是否有失效的情况)

2.通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描

3.通过extra建议判断,是否出现了回表的情况,如果出现了,可以尝试添加索引或修改返回字段来修复

6. 什么情况下索引会失效

1.违反最左前缀原则

2.范围查询右边的列,不能使用索引

3.不要在索引列上进行运算操作,索引将失效

4.字符串不加单引号,造成索引失效 (类型转换)

5.以%开头的like模糊查询,索引失效

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值