news 2026/2/20 2:36:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试时回答索引是为了提高查询效率,面试官问“没了??”(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+树的叶子节点上都能找到那些索引,从二级索引中查询得到记录,而不需要通过聚簇索引查询获得,可以避免回表操作

前缀索引

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 23:47:38

一文详解开源NER模型趋势:RaNER+WebUI成中文信息抽取主流方案

一文详解开源NER模型趋势:RaNERWebUI成中文信息抽取主流方案 1. 技术背景与行业痛点 在当今信息爆炸的时代,非结构化文本数据(如新闻、社交媒体、文档)占据了企业数据总量的80%以上。如何从这些杂乱无章的文字中快速提取出有价值…

作者头像 李华
网站建设 2026/2/18 11:32:54

AI智能实体侦测服务一键部署:Cyberpunk风格WebUI使用教程

AI智能实体侦测服务一键部署:Cyberpunk风格WebUI使用教程 1. 技术背景与应用场景 在信息爆炸的时代,非结构化文本数据(如新闻、社交媒体内容、文档资料)呈指数级增长。如何从海量文本中快速提取关键信息,成为自然语言…

作者头像 李华
网站建设 2026/2/17 16:03:25

Qwen2.5小语种专项测试:按需付费不浪费

Qwen2.5小语种专项测试:按需付费不浪费 1. 为什么选择Qwen2.5测试小语种? 作为语言研究者,你可能经常需要测试不同语言模型在东南亚语系(如越南语、泰语、印尼语等)的表现。Qwen2.5是通义千问推出的新一代大语言模型…

作者头像 李华
网站建设 2026/2/18 0:06:30

AI赋能安全运营:基于Splunk MCP的自主调查智能体构建指南(收藏学习)

文章介绍了如何利用Splunk模型上下文协议(MCP)服务器,结合LangChain与LangGraph框架,构建自主开展安全威胁调查的SOC分析智能体。该架构通过自然语言交互处理复杂SPL查询,解决了安全分析师学习周期长、工作流割裂等痛点,实现需求解…

作者头像 李华
网站建设 2026/2/19 13:27:31

【必收藏】零基础学大模型:从概念应用到实战,一篇搞定!

本文详细介绍了大模型的基本概念、核心类型(LLM和多模态)、开源闭源区别及三大应用场景。用通俗语言和实例帮助零基础读者理解大模型,提供实用建议,适合职场人、学生和技术爱好者快速入门大模型应用,提升效率。 不管你…

作者头像 李华
网站建设 2026/2/18 5:07:45

AI智能实体侦测服务安全性评估:本地部署数据隐私保护方案

AI智能实体侦测服务安全性评估:本地部署数据隐私保护方案 随着人工智能技术在信息处理领域的广泛应用,命名实体识别(Named Entity Recognition, NER)已成为文本分析的核心能力之一。尤其在新闻摘要、舆情监控、知识图谱构建等场景…

作者头像 李华