group by是否会用到索引_进阶联合索引

2023-11-12

单字段索引不能满足你了,那就多来几个...

创建普通索引的时候,指定两个或更多的字段
这就是联合索引,语法如下

alter table 表 add index 索引名(字段1,字段2)

维护数据库时发现现索引重复了?

这时可以删掉重复的索引,释放内存空间,提高查询效率

#因为联合索引(A,B)相当于创建了(A)和(A,B)索引  KEY idx_Id (Id)  KEY idx_Id_age (Id, age)  #所以这里可以删除Id 这个索引;
使用联合索引时,注意索引列的顺序,要遵循 最左匹配原则
联合索引 "idx_id_age " ,id在前,age在后  #符合最左匹配原则select * from user where id=10 and age =10;#符合最左匹配原则select * from user where id =10;#age在前就不符合最左匹配原则,即不会用到索引select * from user where age =10 and id =10;

当我们创建一个联合索引的时候,如(k1,k2,k3),相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则。

如果遇到了范围查询,比如()和 between 等,
会停止匹配,那后面的列就不会用到联合索引了。

where k1 > 1 AND  k2  = 2   AND  k3 = 3#这里k1 使用了范围查询,所以后面的k2,和k3 列就不会使用到联合索引了

这里有几条SQL语句,说说它们分别用到了哪个索引呢?

1.SELECT x, y, z FROM table WHERE y=2 AND x>1 AND z=32.SELECT x, y, z FROM table WHERE y=2 AND x=1 AND z>33.SELECT x, y, z FROM table WHERE y=2 AND x=1 AND z=34.SELECT x, y, z FROM table WHERE y>2 AND x=1 AND z=3

结果是 : 这四条语句都会用到索引!!

1: WHERE y=2 AND x>1 AND z=3 -- 使用索引(x,y,z)的x列。#x是范围列,索引列最多作用于一个范围列,范围列之后的y列和z列无法使用索引。2: WHERE y=2 AND x=1 AND z>3 -- 完整使用索引(x,y,z)。3: WHERE y=2 AND x=1 AND z=3 -- 完整使用索引(x,y,z)。4: WHERE y>2 AND x=1 AND z=3 -- 使用索引(x,y,z)的x列和y列。#y是范围列,索引列最多作用于一个范围列,范围列之后的z列无法使用索引。

最后邀你进群一起学习
关注公众号 技能锦囊
后台回复 SQL

8a3e6cc1abbeb8dcc8b8169484593e85.png长按关注

by~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

group by是否会用到索引_进阶联合索引 的相关文章

  • system和vendor分区挂载解析(Android O)

    首先我们知道init进程在运行时会调用自身 所以init进程分为stage1和stage2两个阶段 而分区挂载操作也分为两个阶段 stage1挂载操作是利用device tree中的配置项来读取配置挂载的 stage2挂载操作则是我们常见的
  • 数据库一对多查询

    环境搭建 实体类 Data public class Teacher private int id private String name private List
  • anaconda不同设备之间的环境复制问题

    问题 由于一些原因 需要从别的机器上复制环境到新的机器上 直接找到anaconda3 envs 下的环境 整个包复制到新的机器上的相同路径下 但是这样虽然能够使用python 并且import其中的库 但是如果要使用pip的时候 会报错 b
  • QT 信号与槽

    QT核心便是信号与槽 通过信号将数据在界面和类中 在本类和其他类中发送和接收 信号负责发送数据 也可以单纯的发送信号 槽负责接收 系统自定义的槽 在相应组件上单机右键转到槽即可看见这列表 例如 一般按钮事件的点击 clicked 松开 re
  • RecyclerView详解 —— 自定义动画

    RecyclerView的强大之处相信大家已经体验到了 在上一篇RecyclerView详解 自定义分割线我们学习了如何定义分割线 本篇将介绍如何自定义动画 Google为我们提供了一个默认的动画实现 DefaultItemAnimator
  • index.android.js打包,Taro 打包apk步骤(Android 打包)

    前提 已经在taro壳子中做了相关打包的配置 已经在taro壳子中做了相关打包的配置 已经在taro壳子中做了相关打包的配置 taro版本2 2 13 1 把项目根目录下的rn temp文件夹复制到壳子根目录 taro native she
  • 打开tensorboard时出现错误:module ‘tensorflow‘ has no attribute ‘estimator‘

    打开tensorboard时出现错误 module tensorflow has no attribute estimator 一 错误现象 二 解决方法 三 错误原因 一 错误现象 二 解决方法 1 打开python的安装目录 找到文件
  • mathjax 数学公式的使用

    这里使用的是mathjax2 7 5版本 其他版本或有不同 下载地址 https github com mathjax MathJax releases tag 2 7 5 MathJax默认样式在被鼠标focus的时候 会有蓝色边框出现
  • 电脑分盘怎么分?分盘详细教程来了,图文教学

    电脑作为小伙伴日常生活使用的工具 很多事情都需要使用电脑来进行处理 虽然小伙伴使用电脑比较多 但是还是有不少的小伙伴不知道电脑分盘怎么分 其实电脑分盘很简单 下面小编就以图文教学的方式 详细的向小伙伴介绍电脑分盘教程 电脑分盘怎么分 很多小
  • 复化中矩形matlab函数法,MATLAB–Mupad 初学者(四)~(八)

    四 函数的创建 一 用赋值运算符创建函数 y 2 x 1 二 用映射创建函数 格式 f x gt body 简化函数后再创建函数 f x gt body直接创建函数 f x gt x 2 1 注意有无等号的区别 三 创建分段函数 1 pie
  • 计算机组成原理(2)-软件设计(二十三)

    计算机组成原理 1 软件设计 二十二 https blog csdn net ke1ying article details 129372288 一 层次化存储结构 速度由慢到快 外存 辅存 硬盘 光盘 U盘 gt 内存 主存 gt cac
  • 【无标题】如何实现权限过滤

    springboot mybatis plus关于数据权限过滤应该怎么实现 spring boot java 角色和部门关联 每个角色可以设置一个数据范围 1全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限 5仅本人数
  • PaxosStore解读

    PaxosStore解读 1 QuorumKV NWR 微信有大量分布式存储 QuorumKV 使用这个算法保证一致性 我们对这个算法做了改进 创造性地把数据副本分离出版本编号和数据存到不同设备 其中N 3 数据只有2份 版本编号有3份 在
  • Qt/C++开发经验小技巧281-285

    悬停窗体QDockWidget默认在标题栏右键会弹出悬停模块的显示隐藏菜单 如果需要去掉 会发现设置Qt NoContextMenu或者事件过滤器拦截都是无效的 必须设置 dockWidget gt setContextMenuPolicy
  • adb logcat命令查看并过滤android输出log

    http blog csdn net hansel article details 38088583 cmd命令行中使用adb logcat命令查看Android系统和应用的log dos窗口按ctrl c中断输出log记录 logcat日
  • 小米路由器3潘多拉固件刷机教程

    小米路由器的官方固件优化不够好 很多人都出现限速 断流的现象 我之前也出现过限速的情况 最后没办法只能设置路由器定时重启 前几天突发奇想把定时重启关了 发现路由器居然连着好几天都没啥问题 我以为从此以后就能安心用了 可惜今天又出现了无法上网
  • Flutter Firebase身份验证教程

    在Flutter Firebase身份验证的这篇文章中 我们将了解如何使用Firebase的flutter插件向我们的Firebase应用程序验证用户身份 如果您不熟悉颤动 建议您先阅读此内容 然后再继续 它将为您提供有关抖动的基本概念 并
  • html 调高德地图 导航,地图控件-参考手册-地图 JS API

    在线插件是在基础地图服务上增加的额外功能 您可以根据自己的需要选择添加 插件分为两类 一类是地图控件 它们是用户与地图交互的UI元素 例如缩放控制条 ToolBar 等 一类是功能型插件 用来完成某些特定地图功能 比如鼠标工具 MouseT
  • Java多线程读取本地照片为二进制流,并根据系统核数动态确定线程数

    Java多线程读取图片内容并返回 1 ExecutorService线程池 2 效率截图 3 源码 1 ExecutorService线程池 ExecutorService线程池 并可根据系统核数动态确定线程池最大数 最大 最小线程数一致

随机推荐

  • vue打包上线如此简单

    大家好 我是大帅子 最近好多人私信我 要我出一期vue的打包上线的文章 那么今天他来了 废话不多说 我们直接开始吧 我们顺便给大家提一下vue项目中的优化 项目打包 1 打开终端 直接在终端输入 我把npm 跟 yarn的打包命令都放在这里
  • CMake增加版本号

    为工程设置版本号 当然可以在源文件中增加版本号变量 但也可以使用CMakeLists txt设置可变的版本号 提供更多的便利性 1 修改CMakeLists txt 用set命令设置版本号 设置最大版本号和最小版本号 set Calcula
  • python 历史版本下载大全

    历史版本下载地址 https www python org ftp python
  • java 对接OmniLayer钱包

    上代码 如果帮助到了你 请点点关注 谢谢 Data public class BtcApi Logger logger Logger getLogger BtcApi class private String rpcUrl private
  • 详解八大排序算法-附动图和源码(插入,希尔,选择,堆排序,冒泡,快速,归并,计数)

    目录 一 排序的概念及应用 1 排序的概念 2 排序的应用 3 常用的排序算法 二 排序算法的实现 1 插入排序 1 1直接插入排序 1 2希尔排序 缩小增量排序 2 选择排序 2 1直接选择排序 2 2堆排序 3 比较排序 3 1冒泡排序
  • Java接口幂等性设计场景解决方案v1.0

    Java接口幂等性设计场景解决方案v1 0 1 面试 实际开发场景 1 1面试场景题目 分布式服务接口的幂等性如何设计 比如不能重复扣款 1 2 题目分析 一个分布式系统中的某个接口 要保证幂等性 如何保证 这个事 其实是你做分布式系统的时
  • JSP session的生命周期简介说明

    转自 JSP session的生命周期简介说明 下文笔者将讲述session生命周期的相关简介说明 如下所示 Session存储在服务器端 当客户端关闭浏览器 并不意味着Session对象的销毁 如果不是显式调用invalidate 去销毁
  • [39题] 牛客深度学习专项题

    1 卷积核大小 提升卷积核 convolutional kernel 的大小会显著提升卷积神经网络的性能 这种说法是 正确的 错误的 这种说法是错误的 提升卷积核的大小并不一定会显著提升卷积神经网络的性能 卷积核的大小会影响网络的感受野 r
  • Java时间处理(UTC时间和本地时间转换)

    文章内容引用来源 http blog csdn net top code article details 50462922 前言 本文主要对UTC GMT CST等时间概念做简单的介绍 比较实用的在于本文最后一个小知识点 带时区格式的时间和
  • python编程题-基本编程题 --python

    1 让Python帮你随机选一个饮品吧 import random listC 加多宝 雪碧 可乐 勇闯天涯 椰子汁 print random choices listC type random choices listC choices函
  • hbuilder如何设置图片居中显示_啊哦!WORD设置格式后,我插入的图片显示不全怎么办?...

    每天分享一个小技巧 不如各位在日常办公中 有没有这样的烦恼 一个编辑好的文档 已经到了最后一步 Ctrl A 全选 设置格式 然后 发现文档里的图片 它 它 它 它 它显示不全了 就像这样 其实导致这种问题发生的原因 很简单 就是因为我们批
  • LeetCode算法题 - 两整数相加(简单)

    题目 func sum num1 int num2 int int return num1 num2
  • SpringBoot通过Excel文件导入用户信息,找出Excel(ArrayList)中重复的元素和个数

    Excel文件内容如下 其中userCode不能重复 怎么返回重复的userCode和个数呢 因为Map是存储键值对这样的双列数据的集合 其中存储的数据是无序的 它的键是不允许重复的 值是允许重复的 也就是只保留一项数据 不记录重复数据 所
  • 2021年南京大学842考研-软件工程部分代码设计题

    题干 1 以下代码是否有问题 有什么影响 2 给出改进 按钮构件 Class Button private Label label private List list public void change list update label
  • 启动hadoop集群

    1 配置core site xml 每个节点上都要配置 路径 usr local hadoop 2 7 3 etc hadoop core site xml 配置项1 name fs defaultFS value hdfs master的
  • 敏感性和特异性

    敏感性 sensitivity 在测验的阳性结果中 有多少是真阳性 就是在生病的病例中 能检测出来多少 是病例中 你的诊断方法对疾病的敏感程度 识别程度 敏感性越高 识别疾病 阳性 的概率越高 不漏诊概率 特异性 Specificity 在
  • 使用yolov8进行字符检测

    最近使用yolov8进行字符检测任务 因为场景数据是摆正后的证件数据 所以没有使用DB进行模型训练 直接选用了yolov8n进行文本检测 但是长条字符区域检测效果一直不太好 检出不全 通过检测和分割等算法的调试 发现算法本身不太适合作文本检
  • Qt 之进程间通信(TCP/IP)

    Qt 之进程间通信 TCP IP 原创 一去丶二三里 发布于2016 02 04 10 19 46 阅读数 15428 收藏 更新于2018 05 30 10 35 06 分类专栏 Qt Qt 实战一二三
  • webpack4打包流程分析,实现一个简易的webpack打包器

    文章内容输出来源 拉勾教育前端高薪训练营 webpack打包的流程大致可以归纳成 options 通过config文件传递进来的配置参数 webpack 生成Compiler实例及其他webpack初始化逻辑 compiler 编译的核心桥
  • group by是否会用到索引_进阶联合索引

    单字段索引不能满足你了 那就多来几个 创建普通索引的时候 指定两个或更多的字段这就是联合索引 语法如下 alter table 表 add index 索引名 字段1 字段2 维护数据库时发现现索引重复了 这时可以删掉重复的索引 释放内存空