mysql学习-9.如何正确的使用索引

2023-05-16

1.索引的规则

1.1.等值匹配

假设索引(A) select * from table where A=xxx就是走索引的

1.2.最左侧列匹配

假设索引(A,B) select * from table where A=xxx and B=xxx就是走索引的

而缺少A select * from table where B=xxx就是不走索引的,因为在B+树中是从A字段最先判断的

如果想要走索引那么可以 select * from table where A in (穷举A的值) and B=xxx

1.3.最左前缀匹配原则

假设索引(A,B) select * from table where A like 'x%',这种前缀模糊匹配也是可以走索引的

如果是like '%x' 是没法走索引的

1.4.范围查找规则

假设索引(A,B) select * from table where A>'1' and A < '1000'

索引页是排序好的双向链表所以可以通过索引页找到范围内的数据页,然后返回

1.5.等值匹配+范围匹配的规则

这个规则是等值匹配和范围匹配的组合使用

select * from table where A='1' and B>'1' and B<'1000'

但是范围后面后面的查询条件是不能走索引了的

2.order by和group by语句使用索引

假设索引(A,B,C)

在order by的时候按照顺序来就行 order by A,B,C

group by也是一样

要求顺序不能打乱,order by的时候所有字段都是降序或者升序排序才行,不能某些字段是升序,某些字段是降序

3.覆盖索引查询

假设索引(A,B,C) ,查询的参数只有A,B,C三个字段,那么就是覆盖索引查询了

select A,B,C table where A=xxx and B=xxx and C=xxx .直接在索引页中查询就可以了,不用回表去到聚簇索引以及去查数据页了,这种就是覆盖索引查询的,性能比较快

4.怎样设计索引

4.1.在where条件后面 在order by后面 在group by后面 尽量满足最左匹配的原则

4.2.尽量设置的字段值比较多种可能的,才会比较好发挥二分法的好处,对于特别长值的字段,可以采取截取字段的前一部分来做为索引,也叫做前缀索引

4.3.在使用索引时,尽量不让字段有函数或者计算,另外主键一定是自增的,有序的.这样子在插入的时候,不会引起频繁的页分裂

4.4.建联合索引的时候,尽量让做范围查询的字段放在索引的最后一位,因为范围查询后面的不会走索引了

4.5.遇到一些不可避免的范围查询,可以转换为字段 例如 查询7天内的数据 可以转换为 is_in_7_day这种字段,然后值为0和1分别表示是否在7天内,然后加到索引中

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

mysql学习-9.如何正确的使用索引 的相关文章

  • vscode中使用pip安装依赖包

    在vscode顶部菜单栏点击 终端 xff0c 软件下方出现终端输入框 第二步 xff1a 点击页面左下角查看python解释器路径 xff1a 在终端中进入到python解释器所在的路径 xff0c 例如输入 cd 39 C Users
  • ROS的2D仿真stdr安装

    ROS中仿真是很重要的一环 xff0c 一般3D仿真使用gazebo居多 xff0c 也可以使用Webots xff0c V rep xff0c stage 2D仿真有stdr xff0c turtlesim 图形显示可以用RVIZ std
  • 华为机试6 公因数集合

    题目描述 功能 输入一个正整数 xff0c 按照从小到大的顺序输出它的所有质因子 xff08 重复的也要列举 xff09 xff08 如180的质因子为2 2 3 3 5 xff09 最后一个数后面也要有空格 输入描述 输入一个long型整
  • Can't find file /root/.vnc/6be8fb894e4a:1.pid You'll have to kill the Xvnc4 process manually

    解决方法 xff1a 分别运行一下代码 xff1a rm tmp X rm tmp X11 unix X1 重新开启VNC服务 xff1a vncserver 1 geometry 1920x1080 depth 24
  • SONiC系统架构

    SONiC系统由两部分组成 xff1a 1 彼此交互的模块 2 用于交互的基础设施 xff08 集中式 xff0c 可扩展 xff09 其中用于交互的基础设施主要是一个非关系型数据库Redis引擎 xff1a 1 提供了一个无视语言的接口
  • 安卓studio jni调用第三方静态库CMakeLists配置

    通过CMakeLists调用第三方静态库需要加入以下CMake配置 xff1a add library mytaglib 这是我即将调用第三方静态库 xff0c 不需要写完整的静态库名 STATIC IMPORTED set target
  • 关于ping一下才可以连接的问题

    关于ping一下才可以连接的问题 其他地方可以ping通 xff0c telnet端口也是通的 xff0c 但是使用ssh连接 xff0c 连接不上 使用xshell工具连接一直无反应 xff0c 在xshell中ping一下对端ip就可以
  • Numpy库中的np.max与np.maximum,两者最大值求解函数有何区别?

    Numpy库中的np max与np maximum 两者最大值求解函数有何区别 在数据分析和处理中 我们经常需要求取一组数据中的最大值 在Python中 Numpy库提供了很多方便易用的数学函数 其中最大值求解函数包括np max和np m
  • 如何在STM32上部署卷积神经网络(纯C语言搭建)

    0 前言 本文是什么 假如你已经使用PyTorch或者TensorFlow训练了一个卷积神经网络 xff0c 得到了各层参数 xff0c 却希望用C语言把这个部署到STM32等单片机上 xff0c 那么就可以看看这篇文章啦 本文虽然主要介绍
  • openstack怎么查看日志(小白适用实操版2019)

    首先从最简单的开始 xff0c 新建一个虚拟机 xff08 Launch Instance xff09 并查看其日志 1 在网页上登录搭建好的openstack虚机 xff08 名称为op1 xff09 的dashboard界面 2 远程S
  • Windows vscode连接远程服务器+用ssh密钥实现免密码登录+使用远程jupyter

    这篇文章是我最先发在某乎上的 xff0c 链接 xff1a https zhuanlan zhihu com p 582216948 记录一下自己折腾的记录 xff0c 免得自己忘掉 首先 xff0c 在Windows电脑上的vscode里
  • 华三交换机配置静态链路聚合

    拓扑如下 xff1a 1 配置链路聚合 SW1设备配置 lt H3C gt system view 进入系统视图 H3C sysname sw1 将设备命名为sw1 sw1 interface bridge aggregation 1 创建
  • 华为设备链路聚合(LACP模式)

    配置要求 xff1a SW1与SW2通过G0 0 1 G0 0 2 G0 0 3的链路聚合进行连接 xff0c 链路聚合要有两条活动链路 xff0c 一条冗余链路 在SW1上配置vlan10 1 1 1 254 24的网关 xff0c 并将
  • Linux——find -type命令

    find type命令查找某一类型的文件 xff0c 后面跟着不同的字母表示不同的文件类型查询manual如下 xff1a 字母文件类型bblock buffered specialccharacter unbuffered special
  • Github账户开启双重验证(two-factor authentication)

    GitHub官方教程是这个 xff1a https docs github com en github authenticating to github configuring two factor authentication 但是过程没
  • tab stop(制表符)是什么?

    在 The C Programming Language 中有一道题是这样的 xff1a Exercise 1 20 Write a program detab that replaces tabs in the input with th
  • HDFS中读取数据——Java接口实现

    这一篇文章 xff0c 我们来深入了解一下Hadoop中的FileSystem类 xff0c 它是与Hadoop的某一文件系统进行交互的API 虽然我们主要聚焦于HDFS实例 xff0c 即DistributedFileSystem xff
  • C——char(字符串)转int

    有时候需要对输入的数字进行计算之类的操作 xff0c 这时候需要将char转int类型 char是一个单独字节 xff0c 可以保存一个本地字符集的内容的类型 一般使用char 的格式来使用 int就是一个范围较小的无符号整数类型 注意 x
  • Mac缓解或关闭鼠标加速

    Mac上鼠标会有加速 xff0c 就是鼠标移动的越快 xff0c 移动距离就越远 如果是Windows设备刚转Mac或者是Windows和Mac一起用可能会非常难受 首先苹果搞这个是苹果鼠标移动距离单位是像素 xff0c 并且Mac分辨率都
  • SwiftUI——延迟执行操作/定时自动执行操作(使用计时器Timer以及异步DispatchQueue.main.asyncAfter)

    在开发软件的过程中 xff0c 我们不仅需要用户点击的时候执行操作 xff0c 有时候还需要定时自动进行一些操作 比如最常见的开屏广告倒计时关闭 xff0c 还比如一些动画效果 实现这些一般有两种方法 xff1a 一种是使用计时器Timer

随机推荐