当前位置: 首页 > news >正文

mysql主键索引与二级索引区别_mysql索引结构设计优选

主键索引即聚簇索引,数据行直接存储在B+树叶子节点中,查询时无需回表;二级索引仅存索引列和主键值,需回表获取完整行记录。主键索引就是聚簇索引,数据行直接存里面MySQL 的 InnoDB 引擎里,PRIMARY KEY 索引不是“普通索引加个唯一约束”那么简单——它决定了整张表数据的物理存储顺序。也就是说,SELECT * FROM t WHERE id = 123 这种查询,InnoDB 找到 id = 123 对应的 B+ 树叶子节点时,**那一页里就直接躺着完整的行记录**,不用二次回表。常见错误现象:EXPLAIN 显示 type=const 但 Extra 里还带 Using where,其实是没走对主键,或者字段类型隐式转换导致索引失效。主键必须非空且唯一,不能是 NULL如果建表时没显式定义 PRIMARY KEY,InnoDB 会悄悄选一个 NOT NULL UNIQUE 列当主键;都找不到,就自动生成隐藏的 row_id(6 字节),但这会让 SELECT * FROM t 结果不可预测主键越短越好,比如用 BIGINT 代替 VARCHAR(36) 做主键,B+ 树层级更少,范围扫描更快二级索引只存「索引列 + 主键值」,查数据要回表所有非主键的 INDEX(包括 UNIQUE INDEX、FULLTEXT、SPATIAL)都是二级索引。它的 B+ 树叶子节点不存整行数据,只存索引字段值和对应记录的主键值(比如 name 索引里存的是 ('Alice', 105),其中 105 是主键 ID)。使用场景:当你执行 SELECT name FROM user WHERE name = 'Alice',能直接从二级索引里拿到结果(覆盖索引);但一旦写成 SELECT email FROM user WHERE name = 'Alice',就得拿着 105 再去主键索引里捞一遍完整行——这就是“回表”,IO 开销翻倍。联合二级索引要注意最左前缀:INDEX (a, b, c) 能加速 WHERE a=1 AND b=2,但对 WHERE b=2 无效如果业务经常查 SELECT a,b,c FROM t WHERE x=1,与其让优化器回表,不如建覆盖索引 INDEX (x, a, b, c)二级索引本身也占空间,INSERT/UPDATE 时要同时维护主键树和所有二级索引树,索引越多写越慢为什么 ORDER BY 有时走不了索引排序是否能复用索引,关键看「索引顺序」和「查询条件+排序字段」是否构成连续的最左前缀。比如有联合索引 INDEX (status, create_time): 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

http://www.cnnetsun.cn/news/1911546.html

相关文章:

  • brackets怎么运行html_Brackets编辑器如何实时预览HTML
  • Sunshine游戏串流完整指南:5步实现自托管游戏串流服务器部署
  • Windows/Mac/Linux全平台保姆级教程:从零配置OpenCode到成功调用Gemini-3
  • 避开这些坑!GD32F303的ADC+DMA+定时器采集方案配置详解与性能优化
  • Hermes 智能体完全实战指南
  • 实测对比:五款免费音视频转SRT字幕工具,谁更适合你?(通义千问、飞书妙记、卡卡字幕助手、AsrTools)
  • AT32F421实战---SPI驱动CH395Q构建简易物联网网关
  • 深入解析UDS中的DID(Data Identification)及其在智能诊断中的应用
  • Amesim实战——气体混合室建模与动态仿真分析
  • 量子计算对软件开发的影响:机遇清单(软件测试从业者专业视角)
  • 别再死记硬背了!用一张图搞懂EtherCAT的三种寻址方式(顺序/设置/逻辑)
  • 从一次失败的CSRF防御说起:PortSwigger靶场SameSite Strict绕过实战复盘
  • 告别测试报告流水账:用CAPL的TestStep函数写出清晰易懂的自动化测试脚本
  • org.openpnp.vision.pipeline.stages.DrawImageCenter
  • 别再用Docker了!手把手教你用Gradle 8.7和IDEA从源码启动Kafka 3.6.1服务器
  • JavaScript的Intl.Segmenter:文本分段(如按词、句子)
  • 从入门到生产:Docker化Vault密钥管理系统的完整安全配置指南
  • React18实战指南(第一篇)——JSX与TSX核心语法解析与应用
  • 从Demo到DAU:2026奇点大会验证的4类可盈利虚拟人场景,第3类已跑通千万级ROI
  • FireRedASR-AED-L问题解决:音频格式不兼容?自动转码16k PCM格式
  • Obsidian加密插件实战指南:3分钟掌握笔记隐私保护
  • 用Python可视化硅晶体生长:3D图解<100>/<110>/<111>晶向差异
  • 3步开启终极纯净音乐之旅:铜钟音乐如何重塑你的听觉体验
  • 鸿蒙_一行代码实现页面间的跳转
  • 解锁Cursor Pro无限使用权限:智能破解工具完全指南
  • 2026奇点智能技术大会独家授权:多模态安防监控合规红线手册(含GDPR/等保2.0/《公共安全视频图像信息系统管理条例》三重映射表)
  • AI模型可解释性:从黑盒到透明的关键技术
  • 智慧养老|基于springboot + vue智慧养老管理系统(源码+数据库+文档)
  • PromQL 入门:Prometheus 查询语言
  • 机械狗改装实战:用奥比中光Gemini336L+ROS打造2.5D高程地图(附完整配置代码)