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

MySQL问题:主要索引类型(聚簇、辅助、覆盖、前缀)

(1)啥是主键索引?

主键索引是一种特殊的唯一索引,用于唯一标识表中的每一行记录。每个表只能有一个主键索引。主键索引也叫聚簇索引。

特性:

唯一性索引,要求主键值必须唯一,不允许有NULL值

数据行实际存储在主键索引的叶子节点中

自动创建,当定义Primary Key,数据库自动创建主键索引

注意:实践时要考虑主键自增,这样使得顺序写入性能好,减少页分裂

  1. 啥是辅助索引

辅助索引是一种非主键索引,它提供主键之外的快速查询路径,但需要结合主键索引才能定位到完整数据行。

特性:

数据结构与主键索引一样,采用B+Tree结构,但叶子节点存储的内容是主键值

查询流程(回表)

查找辅助索引树,回表查询主键索引

如何解决回表:

使用覆盖索引,如果一个索引(通常是辅助索引)包含了查询中需要的所有字段,那么数据库可以直接通过该索引返回结果,而无需回表,这种索引称为覆盖索引。

创建联合索引,将多个字段作为一个联合索引,索引中存在这些数据,查询就不会再次检索主键索引,从而避免回表。

(3)啥是前缀索引?

前缀索引是一种数据库索引技术,它只对列值的前一部分字符建立索引。

特点:减少索引占用的存储空间,同时在一定程度上保持索引的查询效率,较小的索引可以更快地加载到内存中

适用场景:文本字段较长,字段长度有区分度,存储空间有限

注意事项:

无法用于Order By和Group By操作,因为它们需要完整的列值

无法作为覆盖索引,原因无法提供完整列值

在InnoDB中,前缀长度最多为767字节


文章转载自:
http://captation.wjrtg.cn
http://agro.wjrtg.cn
http://aut.wjrtg.cn
http://acpi.wjrtg.cn
http://benevolence.wjrtg.cn
http://bioclimatology.wjrtg.cn
http://ancon.wjrtg.cn
http://academia.wjrtg.cn
http://chafferer.wjrtg.cn
http://bundle.wjrtg.cn
http://allowance.wjrtg.cn
http://calibration.wjrtg.cn
http://adherence.wjrtg.cn
http://barberry.wjrtg.cn
http://backup.wjrtg.cn
http://chiz.wjrtg.cn
http://cheekybone.wjrtg.cn
http://bowleg.wjrtg.cn
http://aeroacoustics.wjrtg.cn
http://cheerfulness.wjrtg.cn
http://calcitonin.wjrtg.cn
http://balalaika.wjrtg.cn
http://beauish.wjrtg.cn
http://allopolyploidy.wjrtg.cn
http://amid.wjrtg.cn
http://caulis.wjrtg.cn
http://cavalier.wjrtg.cn
http://adunc.wjrtg.cn
http://cager.wjrtg.cn
http://blahs.wjrtg.cn
http://www.dtcms.com/a/215808.html

相关文章:

  • Debian 11 之使用hostapd与dnsmasq进行AP设置
  • C++ STL 容器:List 深度解析与实践指南
  • 手机收不到WiFi,手动输入WiFi名称进行连接不不行,可能是WiFi频道设置不对
  • 仿真环境中机器人抓取与操作上手指南
  • 从零实现本地语音识别(FunASR)
  • Vue3 封装el-table组件
  • 13. CSS定位与伪类/伪元素
  • 从 PyTorch 到 TensorFlow Lite:模型训练与推理
  • 从Node.js到Go:如何从NestJS丝滑切换并爱上Sponge框架
  • jenkins-jenkins简介
  • 微信小程序一次性订阅封装
  • Linux 环境下C、C++、Go语言编译环境搭建秘籍
  • React 第四十七节 Router 中useLinkClickHandler使用详解及开发注意事项案例
  • 【Redis】过期键删除策略,LRU和LFU在redis中的实现,缓存与数据库双写一致性问题,go案例
  • Web安全测试-文件上传绕过-DVWA
  • 人该怎样活着呢?54
  • 【2025最新】Cline自定义API配置完全指南:接入Claude 3.7/GPT-4o
  • Python打卡第38天
  • Python map()函数详解:批量数据处理的瑞士军刀
  • (五)MMA(OpenTelemetry/Rabbit MQ/)
  • Android设置界面层级为最上层实现
  • 零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【3/3 适合小白,步骤详细!!!】
  • 深信服防火墙拦截了DELETE、PUT请求,未达到nginx及后端服务
  • 如何将联系人从 Android 传输到 PC(正确步骤)
  • 亚马逊服务器磁盘扩容一般操作
  • R包安装报错解决案例系列|R包使用及ARM架构解决data.table安装错误问题
  • 使用pnpm、vite搭建Phaserjs的开发环境
  • Mico 1.33.1 | 解锁高级版 上千种自定义组件 动态壁纸
  • 评估Facebook的隐私保护:挑战与机遇并存
  • HarmonyOS-ArkUI 窗口层次简介