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

【HBZ分享】MYSQL的联合索引 与 覆盖索引

混淆: 联合索引和覆盖索引是什么关系,二者是一个意思吗?

  1. 二者肯定不是一个意思,并且二者间不存在包含或者强依赖关系,可以认为是两个不同的概念,只是有交集而已。
  2. 联合索引:当创建的所以中包含多个列的时候,比如name, age这两个字段一起作为一个索引列的时候,就是联合索引,就是索引有多个列组成。
  3. 覆盖索引:就是查询的所有字段恰好都包含在索引字段当中,这种的才叫覆盖索引,就是覆盖索引不需要回表查询
  4. 举例1: A索引包含的字段有name, age, sex三个字段,首先A索引肯定叫联合索引,如果【select name, age from person where name=‘hhh’ and age = 18;】 查询字段有name, age, 而这俩字段恰好都包含在联合索引A中,这种的就叫做覆盖索引
  5. 举例2:同样A索引, 如果是【select name, work, descript from person where name=‘hhh’ and age = 18;】, 这种的work和descript字段不在联合索引的字段内,这种的就不叫覆盖索引,要拿着主键id进行回表查询。
  6. 举例3:B索引包含的字段只有name, 首先这个不叫联合索引,因为就一个字段,就是个普通索引,但sql是【select name from person where name=''hbz";】查询字段只有name,恰好索引字段也是name,这种的也叫覆盖索引,但不是联合索引
  7. 以上3个例子就诠释了二者不是强依赖的关系,压根就不是一个意思。

==注意1:使用联合索引的时候,where后面的条件字段那肯定要在联合索引的包含字段之内,并且要遵从最左原则,即条件字段一定要按照联合索引字段的顺序最左为name,则一定要存在name,name可以不是第一个,但一定要有name。比如联合索引顺序是name, age, sex。 那where条件的一定是要存在name字段的【where name = ‘xxx’ and age = xx and sex = ‘男’】,可千万不能是【where age = xx, and sex = “男”】 ==这种把最左边的name不写,那就不生效了

注意2:也可以是【where age = xx and name = “hhh”】数量对不上不要紧,顺序上对不上也没事,优化器会自动调整,但一定要有name字段,因为他是最左边的

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【二叉树进阶】--- 根据二叉树创建字符串
  • LabVIEW光纤水听器闭环系统
  • 数据库服务器运维最佳实践
  • record 关键字
  • 内核源码定制修改模块化技术总结
  • 线程的概念
  • 基于inotif的文件同步备份
  • 服务器是什么?怎么选择适合自己的服务器?
  • 设计模式 - 组合模式
  • 百问网全志系列开发板音频ALSA配置步骤详解
  • 找到财富杠杆然后再行动中精进 -《纳瓦尔宝典》读后感
  • 苍穹外卖(四):swagger导入接口文档
  • 《Advanced RAG》-12-增进RAG的全局理解(二)
  • Golang 中的 XML 魔法:encoding/xml 包的精妙运用
  • 『大模型笔记』基于LLM生成真实世界数据的合成问答数据!
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • android 一些 utils
  • C++类中的特殊成员函数
  • CentOS 7 修改主机名
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • es6
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • extract-text-webpack-plugin用法
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • javascript 总结(常用工具类的封装)
  • Linux下的乱码问题
  • python docx文档转html页面
  • spring + angular 实现导出excel
  • spring-boot List转Page
  • Theano - 导数
  • 阿里云购买磁盘后挂载
  • 大型网站性能监测、分析与优化常见问题QA
  • - 概述 - 《设计模式(极简c++版)》
  • 观察者模式实现非直接耦合
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 力扣(LeetCode)965
  • 前端
  • 设计模式(12)迭代器模式(讲解+应用)
  • 移动端 h5开发相关内容总结(三)
  • 最近的计划
  • ​VRRP 虚拟路由冗余协议(华为)
  • #1014 : Trie树
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (pytorch进阶之路)扩散概率模型
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二)springcloud实战之config配置中心
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (算法二)滑动窗口
  • (一)Neo4j下载安装以及初次使用