知识点标签

数据库索引面试题解析

数据库索引相关面试题,重点拆解索引结构、回表、覆盖索引和范围扫描。

14 道题 5 个岗位 5 个公司

数据库索引相关面试题

非聚簇索引二次查找的过程?

非聚簇索引二次查找,本质是 InnoDB 使用二级索引先定位满足条件的索引记录,再通过索引叶子节点里保存的主键值到聚簇索引中查找完整行记录。这个过程常被称为回表。面试回答要说明二级索引和聚簇索引的结构差异、为什么叶子节点存主键而不是整行、什么时候必须回表、覆盖索引如何避免回表,以及 ICP、联合索引、范围扫描和优化器成本估算对实际执行路径的影响。

索引都用在什么情况下?

索引适合用在能够显著减少扫描行数、避免额外排序、加速表连接、减少回表或保障数据唯一性的场景,但它不是越多越好。回答要同时讲清楚收益与代价:索引能提升读查询效率,也会占用空间、增加写入维护成本,并且低选择性字段、小表、频繁更新字段往往不适合盲目建索引。

索引下推是什么?

索引下推(Index Condition Pushdown,ICP)是 MySQL 优化器把部分原本由 server 层判断的 WHERE 条件,下推到存储引擎层,在扫描二级索引时先利用索引记录中的列做过滤,再决定是否回表读取完整行。它的核心价值不是减少索引扫描本身,而是减少无效回表次数,尤其适合联合索引中部分条件不能继续用于定位范围、但仍包含在索引列里的场景。

B 树和 B+ 树有什么区别?

B 树和 B+ 树都是面向磁盘页设计的多路平衡搜索树,核心差异不只是数据放在哪里,而是由此带来的扇出、树高、查询路径稳定性、范围扫描能力和索引工程实现差异。数据库索引更偏好 B+ 树,因为它能用更高扇出降低磁盘访问次数,并用叶子节点顺序结构支撑范围查询、排序、覆盖索引和顺序预读。

Mysql两种引擎知道吗,他们的索引有什么区别?

Mysql两种引擎知道吗,他们的索引有什么区别?这道腾讯牛客题的关键是围绕“InnoDB 与 MyISAM 索引区别”讲清概念、机制、取舍和边界。这题通常重点比较 InnoDB 和 MyISAM。InnoDB 使用聚簇索引组织数据,主键索引叶子保存完整行,二级索引叶子保存主键值;MyISAM 数据文件和索引文件分离,索引叶子通常保存数据文件地址。

数据库索引的作用?

数据库索引的作用?这道腾讯牛客题的关键是围绕“数据库索引的作用”讲清概念、机制、取舍和边界。数据库索引的作用是为查询提供更高效的访问路径,减少全表扫描。它可以加速等值查询、范围查询、排序、分组和连接条件,在覆盖索引场景下还能减少回表。

为什么数据库索引常用 B+ 树,B 树、B+ 树和二叉树有什么区别?

为什么数据库索引常用 B+ 树,B 树、B+ 树和二叉树有什么区别?这道腾讯牛客题的关键是围绕“数据库索引为什么常用 B+ 树”讲清概念、机制、取舍和边界。数据库索引常用 B+ 树,是因为它适合磁盘页和范围查询。B+ 树分叉多、树高低,非叶子节点只存 key 和子页指针,叶子节点顺序保存数据或主键并通过链表相连,能减少随机 I/O 并高效范围扫描。

SQL 语句执行效率低时,如何分析并优化?

SQL 语句执行效率低时,如何分析并优化?这道腾讯牛客题的关键是围绕“SQL 查询优化与索引失效判断”讲清概念、机制、取舍和边界。SQL 慢或大批量查询要按定位、解释、改写、验证的流程处理:先从慢查询日志定位 SQL,再用 EXPLAIN/EXPLAIN ANALYZE 看访问类型、索引、扫描行数、回表、排序和临时表。