当前位置: 首页 > news >正文

面试时回答索引是为了提高查询效率,面试官问“没了??”(MySQL索引的面试题目)

MySQL中索引部分是面试官最常问道的,索引说破天就是充当书的目录的作用,提高查询效率,但是面试的时候这样回答不够优雅,如何让面试官眼前一亮

关于MySQL索引的面试题目,我总结了如下思维导图,需要完整MySQL的面试思维导图可以私信我领取,也可以持续关注我的MySQL专栏,我会继续分享MySQL相关面试题,助力大家在面试时被问到MySQL轻松拿下

一、明确的前提

索引不是万能的,索引并不适用于所有场景,也不能说索引越多越好。索引固然可以提高查询速度,但是索引同样也有缺点,比如:

  • 索引需要占用磁盘空间,数量越多,占用的磁盘空间越大
  • 创建和维护索引要耗费时间,时间随着数据量的增加而增大
  • 插入、更新和删除操作性能下降:当创建一个索引时,数据库在执行增删改操作时,不仅要对表中数据进行维护,还需要对相关索引进行维护

索引的设计也有一些原则:

  1. 选择区分度高的列作为索引(不要选择性别这样区分度极低的列作为索引)
  2. order by、group by、distinct后面的字段建索引,能避免临时表和文件排序
  3. 索引并不是越多越好,非必要不创建索引
  4. 频繁查询的字段要建索引
  5. 创建索引尽量选择普通索引而不是唯一索引
  6. 联合索引,遵循最左前缀
  7. 避免类型长度大的字段做索引,text、longtext这种字段,索引占用空间大,加载到内存耗时,还可能把其他热点数据挤出Buffer Pool

二、索引的分类

一张图就搞定:

聚簇索引和非聚簇索引的区别?

1.聚簇索引叶子节点包含了实际的数据行,非聚簇索引的叶子节点任然是索引,存在一个指针指向对应的数据块,当通过聚簇索引查找数据时,可以直接从索引中获得数据,无需回表;

2.聚簇索引键值的逻辑顺序决定了相应行的物理存储顺序,非聚簇索引的逻辑顺序与磁盘上行的物理存储顺序不同;

3.每张表只能有一个聚簇索引,而可以有多个非聚簇索引

4.聚簇索引在范围查询和排序查询更有效率

B+树VSB 树VS二叉树VSHash

B+树 VS B 树:B+树只在叶子节点存储数据,而B树非叶子节点也要存储数据,所以在相同的IO磁盘次数下,就能查询更多的节点;B+树叶子节点采用的是双链表链接,更适合范围查询;

B+树 VS 二叉树:即使数据达到千万级别,B+树的高度维持在3-4层左右,相比于二叉树来讲树高更低,IO磁盘操作更少

B+树 VS Hash:Hash在做等值查询的时候效率较高,但是Hash不适合做范围查询

三、索引失效场景

  1. 模糊查询(like)的不当使用
  2. 在索引列中使用函数
  3. 联合索引不满足最左前缀原则
  4. 在索引列中进行表达式计算
  5. 在where子句中如果or前的条件列是索引列,而or后面的条件列不是索引列,也会导致索引失效
  6. 隐式类型转换,比如遇到字符串和数字比较时,会自动把字符串转为数字,然后进行比较,通过CAST函数完成隐式类型转换,等同于索引列使用了函数

四、索引使用技巧

索引下推(主要用在联合索引中)

把部分查询条件从server层下推到存储引擎层,在引擎层就把不符合条件的数据过滤掉,不需要回表查完整数据;

索引覆盖

SQL中查询的所有字段,在索引B+树的叶子节点上都能找到那些索引,从二级索引中查询得到记录,而不需要通过聚簇索引查询获得,可以避免回表操作

前缀索引

使用前缀索引是为了减小索引字段大小,可以增加一个索引页中存储的索引值,有效提高索引的查询速度。在一些大字符串的字段作为索引,使用前缀索引可以帮助我们减小索引页的大小;

http://www.jsqmd.com/news/225155/

相关文章:

  • 全球最强电子书管理神器!完全免费,支持电子书管理/编辑/阅读/格式转换,epub阅读器,电子书格式转PDF等
  • 怎么给电脑隐私文件夹内的文件加密?用它一键加密,文件瞬间全部消失!一秒保护隐私~
  • 如何高效提取机构名?AI智能实体侦测服务参数详解教程
  • 吾爱置顶!“小黑子”大神真的强,免费办公文档格式转换工具箱,PDF格式转换,永久免费~坤tools
  • AI智能实体侦测服务从零开始:下载镜像→启动→测试三步走
  • Qwen2.5模型体验对比:5块钱测试3个版本,拒绝浪费
  • 稳拿AI岗offer!项目经验梳理+面试话术技巧,面试官高频问题全破解
  • 稳拿AI岗offer!项目经验梳理+面试话术技巧,面试官高频问题全破解
  • AI智能实体侦测服务为何火爆?三大核心卖点深度拆解
  • Qwen2.5论文润色神器:学生特惠1元体验,免显卡跑大模型
  • 智能简历解析系统:集成RaNER实体识别功能教程
  • AI智能实体侦测服务A/B测试:不同模型版本效果对比实验
  • AI智能实体侦测服务省钱技巧:免配置镜像+轻量计算部署案例
  • 题目1099:校门外的树
  • Qwen2.5-7B保姆级教程:云端GPU免配置,1小时1块快速体验
  • AI智能实体侦测服务如何导出结果?HTML/PDF生成实战方法
  • AI实体识别服务对比:RaNER与RoBERTa模型
  • Qwen2.5多模态避坑指南:云端GPU实测省下万元显卡钱
  • Qwen2.5-7B文档摘要指南:没GPU笔记本也能跑,1小时1块
  • AI智能实体侦测服务性能评测:响应速度与并发能力实测数据
  • RaNER模型部署实战:构建企业知识图谱的第一步
  • 中文NER系统进阶:RaNER模型与知识图谱集成
  • 【收藏】大模型三种协作模式详解:从Embedding到Agent,程序员必备指南
  • 2026想转行?渗透测试vs网安工程师vs安全运维,应该怎么选?零基础入门到精通,收藏这篇就够了
  • AI智能实体侦测服务备份恢复:数据持久化部署最佳实践
  • Qwen2.5-7B语言理解测评:没服务器?云端按需付费
  • 收藏!2026程序员必看:不懂大模型将遭降维打击,6个月转型路线图直接套用
  • 2026最新Web安全攻防学习图谱:带你90天从漏洞猎人到企业防御架构师
  • AI驱动信息抽取新方式:AI智能实体侦测服务趋势解读
  • 一个驱动器要驱动多个负载,导致边沿变缓?为什么呢?然后边沿变缓慢会有什么影响呢?