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

Mysql:索引与B+树

在日常MySQL建表中我们有三种定义主键的方式。不同的主键定义方式在InnoDB底层B树聚簇索引的创建时机、磁盘开销、底层逻辑完全不同。方式一字段后直接定义主键内联主键CREATE TABLE user( id INT PRIMARY KEY, name VARCHAR(20) );1. 建表语句执行的同时InnoDB直接以当前主键字段构建聚簇索引B树。2. 数据在磁盘物理页中有序连续存储。3. 后续新增数据直接按照B树规则插入不会产生任何表重构。4. 性能最优是开发中最推荐的方式。总结建表 聚簇B树 一次性生成零额外开销。方式二先建表后续再追加主键CREATE TABLE user( id INT, name VARCHAR(20) ); ALTER TABLE user ADD PRIMARY KEY(id);1. InnoDB表必须要有聚簇索引。建表无显式主键时InnoDB按照优先级自动生成临时的聚簇B树。无主键时优先级自定义主键 唯一索引 隐藏6字节 row_id2. 执行 alter 新增主键时销毁原本的临时B树全表数据重新磁盘排序 基于新的自定义主键重新完整构建一颗全新的聚簇B树3. 整个过程会产生大量IO开销表数据量越大性能损耗越严重。4.删除主键也会触发全表重构。总结数据量大时会产生大量磁盘IO、锁表、性能雪崩生产环境严禁后期添加主键。方式三定义主键 额外普通索引/联合索引CREATE TABLE user( id INT PRIMARY KEY, name VARCHAR(20), INDEX idx_name(name) );InnoDB会同时存在两颗及以上B树1. 聚簇索引B树叶子节点存储完整的整行数据以主键为排序规则。2. 二级索引普通索引B树叶子节点只存储索引列的值 对应的主键值不存储整行数据。3. 回表机制当通过二级索引查询数据时先在二级B树找到对应主键 → 再拿着主键去聚簇B树中查询完整数据这个过程叫做回表查询。复合索引可以不回表已知 a 找 b 在a,b二级B树能直接找到 b索引创建原则1.比较频繁作为查询条件的字段应该创建索引2.唯一性太差的字段不适合单独创建索引即使频繁作为查询条件3.更新非常频繁的字段不适合作创建索引4.不会出现在where子句中的字段不该创建索引
http://www.rkmt.cn/news/1295827.html

相关文章:

  • Noto Emoji字体终极指南:5步解决跨平台表情符号乱码问题
  • OpenAI关闭微调API,AI副业者的机会来了!
  • 闻达AI助手:本地化大语言模型平台的架构设计与应用实践
  • 终极免费音频编辑解决方案:告别昂贵软件,用Audacity实现专业级音频处理
  • Cadence 17.4出Gerber给嘉立创,解析失败?试试手动清理这个钻孔文件
  • 上海/北京/深圳 | Build with AI: 直击 Next 26,构建智能未来
  • 高效地下水模拟完全指南:使用Python和FloPy进行专业水文建模
  • 从Windows效率困境到指尖革命:Flow Launcher的智能工作流重塑指南
  • 湖北综合格斗俱乐部推荐:从“野蛮生长”到“专业进化”,你选对了吗? - 速递信息
  • 如何在PC上运行Switch游戏:Ryujinx开源模拟器的完整配置指南
  • 测绘新手避坑指南:用全站仪做闭合导线测量,从外业到内业计算全流程复盘(附原始数据)
  • 从网卡硬件到DPDK应用:一张图看懂RSS分流全链路与性能瓶颈排查
  • 2026年亲测必备:5款论文降AI工具,真实降低AI率不虚标! - 降AI实验室
  • 成都小程序定制服务优选 核心优势全解析 - 软件测评师
  • 中石油加油卡回收,那些躺在抽屉里的油卡,该醒醒了 - 京顺回收
  • SLAM_TOOLBOX实战:从零到一构建长期可用的2D地图
  • TPS65131模块实战:单电源生成正负双电压的工程指南
  • CircuitPython驱动NeoPixel与DotStar:从原理到炫彩动画实战
  • 边缘存储解决方案:边缘环境的数据存储
  • Agent Basic 完整篇
  • 微信聊天记录永久保存指南:三步打造你的数字记忆宝库
  • 基于CircuitPython与GBoard的Android摩斯码输入外设制作指南
  • 嵌入式USB开发终极指南:CherryUSB轻量级协议栈完全解析
  • 体验Taotoken官方价折扣与Token Plan带来的成本优势
  • 国内综合格斗职业队怎么选?数据拆解五大核心指标 - 速递信息
  • MPLAB代码配置器:图形化配置Microchip MCU外设与驱动生成
  • JVM性能优化:整数运算中XMM寄存器的妙用与寄存器分配策略
  • CircuitPython嵌入式开发:元组、列表、字典数据结构实战与优化
  • ZEMAX热分析实战:从“空气边缘厚度”到“镜片带台”的避坑指南
  • Zeroconf零配置网络实战:mDNS与Avahi跨平台配置指南