news 2026/3/11 21:44:03

阿里一面:MySQL中,一个表最多支持多少个索引?64?16个?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
阿里一面:MySQL中,一个表最多支持多少个索引?64?16个?

阿里一面:MySQL中,一个表最多支持多少个索引?64?16个?

这个问题在阿里等大厂面试中很常见,正确答案是:InnoDB 存储引擎(MySQL 默认引擎)的一个表最多支持 64 个二级索引(secondary indexes),加上主键索引(primary key),总索引数可达 65 个。

  • 不是 16 个:16 是每个复合索引最多包含的列数(multicolumn index 最多 16 列),或者所有存储引擎的最小保证(至少支持 16 个索引)。很多人混淆了这两个概念,导致答成 16。
  • 是 64 个二级索引:这是 MySQL 官方文档(8.0/8.4/9.x 版本)的硬限制,适用于 InnoDB。
官方限制详解(2025 年最新)
项目限制值说明
二级索引(secondary indexes)数量64 个InnoDB 表的最大二级索引数(不包括主键)。超过会报错。
总索引数65 个(64 二级 + 1 主键)主键是聚簇索引,不计入二级索引限制。
每个索引的列数16 列复合索引最多 16 列,超过报错:Too many key parts specified; max 16 parts allowed
索引键长度3072 字节(DYNAMIC/COMPRESSED 格式)
767 字节(REDUNDANT/COMPACT 格式)
utf8mb4 下 VARCHAR 前缀常限 191 字符(767/4)。
所有引擎最小保证16 个索引MyISAM 等也类似,但 InnoDB 是主流。
为什么大厂问这个?
  • 考察基础扎实度:很多人记成“16个”,其实是混淆了“索引数”和“索引列数”。
  • 延伸到最佳实践:虽然硬限是 64,但实际生产中单表索引建议控制在 5-8 个以内(阿里《Java开发手册》推荐不超过 5 个)。
    • 索引太多:写入/更新/删除性能暴降(每个索引都要维护)。
    • 磁盘/内存占用大,优化器选择索引时更复杂(可能选错计划)。
    • 大厂高并发场景,单表索引超 10 个就得审视表设计(是否该分表/优化查询)。
面试建议回答模板

“InnoDB 引擎下,一个表最多支持64 个二级索引(官方文档限制),加上主键总共 65 个。
但实际项目中,单表索引不建议超过 5-8 个,因为索引维护成本高,会严重影响 DML 性能。阿里手册也推荐控制在 5 个以内。
另外,每个复合索引最多 16 列,这可能是很多人误以为表最多 16 个索引的原因。”

甩出这个答案,面试官绝对点头~如果他追问“为什么不是无限个?”,可以答:InnoDB 内部结构限制(页面大小、键管理等),防止索引爆炸影响性能。

如果你在阿里/大厂面过类似题,欢迎分享细节!下一个问题可能是“索引太多怎么优化?”😂

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

【Android】Glide的使用

简介 是一个快速高效的Android开源媒体管理和图像加载框架,它将媒体解码、内存和磁盘缓存以及资源池封装到一个简单易用的界面中。 Glide支持拉取,解码和展示视频快照,图片和GIF动画。 **优点:**1.使用简单,并且支持多…

作者头像 李华
网站建设 2026/3/8 22:25:21

计算机毕业设计springboot餐厅预定系统 基于SpringBoot的智慧餐饮订座平台 SpringBoot驱动的线上餐厅席位预约管理系统

计算机毕业设计springboot餐厅预定系统693j34gy (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。移动互联网把“到店即食”变成了“到店前决策”,餐厅空座率与顾客等位…

作者头像 李华
网站建设 2026/3/9 20:01:55

被老板追着问的省钱秘籍,竟然是它!

传统资产管理的 “痛点” 大揭秘在企业运营的庞大体系中,资产管理堪称关键一环。然而,不少企业还在沿用传统的资产管理方式,殊不知,这些方式正悄然成为企业降本增效路上的 “绊脚石”。人工盘点:耗时耗力的 “持久战”…

作者头像 李华
网站建设 2026/3/7 10:25:40

传统修复 vs AI修复:DirectX问题处理效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个DirectX修复效率对比工具:1.传统修复流程模拟(手动下载、安装等) 2.AI修复流程实现 3.自动记录各步骤耗时 4.生成对比图表 5.支持导出测试报告。要求使用Python…

作者头像 李华
网站建设 2026/3/11 2:31:11

用HBuilderX快速原型设计:1小时打造产品Demo

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商APP的快速原型,包含商品列表、商品详情和购物车功能。使用HBuilderX和uni-app框架,要求界面美观,有基本的交互效果(如点…

作者头像 李华
网站建设 2026/3/11 13:56:19

解锁Git高阶技能:Rebase、Stash与子模块的奇妙之旅

引言在当今软件开发的世界里,版本控制系统是开发者不可或缺的工具,而 Git 无疑是其中的佼佼者。它以强大的功能、高效的分布式特性以及丰富的命令集,成为了全球开发者首选的版本管理工具。无论是个人开发者在小型项目中的代码管理&#xff0c…

作者头像 李华