1.8k2 分钟

2025-01-15🌱上海: ☀️ 🌡️+4°C 🌬️↓19km/h # 请详细描述 MySQL 的 B + 树中查询数据的全过程 # MySQL 中 count(*)、count(1)和 count(字段名)有什么区别? # 简要回答 都是用来统计行数的聚合函数,但是还有一些区别: 功能上: 1. count (*) 会统计表中所有行的数量,包括 null 值(不会忽略任何一行的数据)。由于只是计算行数,不需要对具体的列进行计算,所以性能一般较高 2. count(1)和 count(*)几乎没有差别,也会统计表中包括 null 值的所有行的数量 3.
9.8k9 分钟

2025-01-15🌱上海: ☀️ 🌡️+4°C 🌬️↓19km/h # MySQL 中的索引数量是否越多越好?为什么? # 简要回答 索引数量并不是越多越好,虽然索引在提升查询性能方面起着重要作用,但是过多的索引会带来一些负面影响。 占用额外的存储空间 每个索引都会占用一定的磁盘空间,当索引数量过多的时候,会导致数据库文件体积增大,不仅浪费磁盘空间,还可能影响数据库的备份和恢复速度,每个索引都是一个 B + 树,B + 树的每个节点通常是一个页,每页默认 16KB 降低写入性能 每次对表进行插入、更新、删除操作时,数据库不仅要更新表中的数据,同时还要更新相关的索引
3.1k3 分钟

2025-01-15🌱上海: ☀️ 🌡️+4°C 🌬️↓19km/h # MySQL 中使用索引一定有效么? # 简要回答 不一定有效 查询条件中不包含索引列 低基数列索引效果不佳 查询条件复杂且不匹配索引的顺序 对于小表,全表扫描可能比使用索引开销更小 # 补充回答 排查索引效果的方法:使用 EXPLAIN 命令,在查询语句前添加 EXPLAIN 可以查看 MySQL 选择的 执行计划 ,了解是否使用了索引,使用了哪个索引,以及扫描的行数等信 红色为需要重要关注的信息 id:执行计划中每个操作的唯一标识符。对于一条查询语句,每个操作都有一个唯一的 id。但是在多
4.8k4 分钟

# MySQL 三层 B + 树能存多少数据? 具体答案题解很详细,这里只补充下思路及扩展知识点。 # 答题思路 一般这种题,更多的是考察对于 MySQL 存储格式的了解,后续遇到类似的面试题该如何思考?接下来按步骤分析以下。 了解 MySQL 的存储格式及对应的结构(如每页默认大小 16KB,B + 树的结构) 假设数据大小,估算每页可存储数据数量 假设索引键和指针大小,估算单个节点的扇出数量 通过(单页存储数据量 × 单个节点的扇出量 2 )计算总数据量,这里三层就是 2 次方,n 层就是 n-1 次方。 # 扩展知识(了解即可) # InnoDB 的存储格式 # 页结构 # 引导
6k5 分钟

2025-01-15🌱上海: ☀️ 🌡️+3°C 🌬️↓19km/h # MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别? # 简要回答(重要) 聚簇索引的 非叶子节点 存储的是 索引值 , 叶子节点 存储的是 完整的数据记录 ,一个表只能有 一个 聚簇索引,一般是表的主键,主要用于范围查询和排序。 非聚簇索引的 非叶子节点 存储的也是 索引值 ,但是 叶子节点 存储的是 数据行的主键 或 对应的索引列 ,一个表可以有 多个 非聚簇索引,非聚簇索引由称为 辅助索引 , 二级索引 等,主要用于 快速定位 要查找的列。 # 补充回答(引导面试官主动提问) 聚簇