标签: 面试题

58 篇文章

MySQL 的索引类型有哪些?
索引是帮助MySQL高效获取数据的数据结构。就像书本的目录一样,可以快速定位到需要查找的内容。以下是MySQL中索引的主要分类和详解。 一、按数据结构划分 这是最核心的分类方式,决定了索引的底层实现和适用场景。 B+Tree索引 描述:这是MySQL中最常用、最主流的索引类型。InnoDB和MyISAM存储引擎都支持B+Tree索引。 特点: 有序…
MySQL char 和 varchar 的区别是什么?
在MySQL中,CHAR和VARCHAR是两种最常用的字符串数据类型,它们看似相似,但在存储方式、性能和适用场景上有着本质区别。理解这些差异对数据库设计和性能优化至关重要。 核心区别对比 特性CHARVARCHAR存储方式​定长字符串变长字符串空间占用​固定长度,不足部分用空格填充实际数据长度+长度前缀(1-2字节)最大长度​255字符65,535…
MySQL InnoDB 和 MyISAM 有什么区别?
MySQL 作为最流行的开源关系数据库之一,提供了多种存储引擎,其中 InnoDB 和 MyISAM 是最常用且最具对比性的两种。理解它们的核心差异对于数据库设计、性能优化和正确选型至关重要。 核心差异概览 特性对比InnoDBMyISAM事务支持​支持ACID事务不支持事务锁级别​行级锁表级锁外键约束​支持不支持崩溃恢复​有crash-safe恢…
MySQL 深度分页如何优化?
什么是深度分页? 深度分页是指,当某张表数据量极大,查询的页码又非常靠后,导致最终分页 SQL 中的 offset 偏移量很大,数据库需要扫描并丢弃大量记录,导致性能急剧下降的查询问题。 比如说有一张订单表,查询页码为 100001 的数据,每页展示 10 条数据,其分页 SQL 如下: SELECT * FROM orders…
什么是 MySQL 回表查询?如何避免?
什么是回表查询? 回表查询是指:数据库在使用非主键索引(二级索引)进行查询时,首先在二级索引树中找到符合条件的主键值,然后再根据这些主键值回到主键索引(聚簇索引)树中查找完整行数据的过程。 这个过程,就像 “查字典”:先查 偏旁部首目录​ (二级索引)找到对应的页码(主键ID),然后再翻到 正文页​ (主键索引)看详细内容。 原理:InnoDB 的…
MySQL 自增主键用完了怎么办?
面试考察点 此题主要考察点在于: 基础知识深度:考察你是否真正理解自增主键(AUTO_INCREMENT)的实现机制、限制(数据类型范围)及其作为业务“唯一标识”的本质,而非仅仅会使用。 问题排查与解决能力:考察你在面对一个看似低概率但后果严重的生产事故预兆或已发生事件时,系统性的分析、定位和解决思路。 系统设计与前瞻性思维:面试官不仅仅想知道“用…
MySQL 为什么不推荐使用外键?
面试考察点 面试官提出这个问题,通常旨在考察你对数据库设计的深层理解、工程实践中的权衡能力,以及对互联网架构模式的认知。具体考察点包括: 对数据库性能影响的理解:面试官不仅仅是想知道 “外键影响性能”,更是想知道你是否能具体说明性能损耗的来源(如锁、检查开销、事务回滚)及其在高并发场景下的放大效应。 对架构与耦合性的思考:考察你是否具备服务解耦和分…
MySQL 中 count(1)、count(*) 与 count(列名) 的区别?
面试考察点 面试官提出这个问题,通常希望考察以下几个层面,由浅入深: 语法与基础概念理解: 是否清楚这三个写法在语义上的基本区别,尤其是对 NULL 值的处理。 对 MySQL 执行引擎的深度了解: 面试官不仅仅想知道语法区别,更想考察你是否了解这些写法在 不同存储引擎(MyISAM vs InnoDB) 下的性能差异,以及 优化器如何对它们进行优…