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

mysql数据库之索引使用原则

一、最左前缀法则。

1、如果索引使用了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。

如果跳跃到某一列,索引将部分失效(后面的字段索引失效)

2、查看索引

 3、最左在,也未跳过索引

4、最左侧在

5、最左侧不在,索引全部失效

 6、最左在,跳过查询后面,后面的索引失效

 二、范围查询。

1、联合索引中,出现范围查询(>,<),范围查询右侧的列索引失效

2、将>,<改为>=或<=

 三、索引失效。

1、不要在索引列上进行运算操作,否则索引将会失效

 运算后,索引失效

2、字符串不加引号,索引会失效

可以查询出来

索引失效1

 索引失效2

 3、模糊查询,如果仅仅是尾部模糊匹配(+%),索引不会失效,如果是头部模糊匹配(+%),索引失效

 4、or连接的条件,用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。

 只需要给字段建立索引就可以。

 5、数据分布影响。如果mysql评估使用索引比全表更慢,则不使用索引。

 返回的数据过半走全表,不过半走索引。

 四、sql提示。

sql提示是优化数据库的一个重要手段,简单来说,就是在sql语句中计入一些人为的提示来达到优化操作的目的。

1、use index:用哪个索引

select * from tb_user use index(idx_user_pro) where profession = '软件工程';

2、ignore index:不要走这个索引

explain select * from tb_user ignore index(idx_user_pro) where profession = '软件工程';

 3、force index:必须走这个索引

explain select * from tb_user force index(idx_user_pro) where profession = '软件工程';

五、覆盖索引。 

尽量使用覆盖索引(查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到),减少select *。

 注意:

using index condition:查找使用了索引,但是需回表查询数据。

using where;using index:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据。

 六、前缀索引。

1、当字段类型为字符串(varchar,text等)时,有时候需要索引很长的字符串,这会让索引变得很大,查询时,浪费大量的磁盘IO,影响查询效率。此时可以只将字符串的一部分前缀建立索引,这样可以大大节约索引空间,从而提高索引效率。

#创建前缀索引
create index idx_xxx on table_name(column(n));

2、前缀长度
可以根据索引字段的选择性来决定,而选择性是指不重复的索引值(基数)和数据表的记录总数的比值,索引选择性越高则查询效率越高,唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。

select count(distinct email) / count(*) from tb_user;
select count(distinct substring(email,1,5)) / count(*) from tb_user;

 

 示例

七、单列索引和联合索引。

单列索引:即一个索引只包含单个列。

联合索引:即一个索引包含了多个列。

1、在业务场景中,如果存在多个查询条件,考虑针对于查询字段建立索引时,建议建立联合索引,而非单列索引,避免回表查询。

 多条件联合查询时,mysql优化器会评估哪个字段的索引效率更高,会选择该索引完成本次查询。

2、联合索引情况。

 

相关文章:

mysql数据库之索引使用原则

一、最左前缀法则。 1、如果索引使用了多列&#xff08;联合索引&#xff09;&#xff0c;要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始&#xff0c;并且不跳过索引中的列。 如果跳跃到某一列&#xff0c;索引将部分失效&#xff08;后面的字段索引失效&am…...

【Java】Spring Boot 日志文件

文章目录SpringBoot日志文件1. 日志有什么用2. 日志怎么用3. 自定义日志打印3.1 在程序中得到日志对象3.2 使用日志对象打印日志4. 日志级别4.1 日志级别有什么用&#xff1f;4.2 日志级别的分类与使用5. 日志持久化6. 更简单的日志输出--lombok6.1 添加 lombok 依赖6.2 输出日…...

软件项目管理计算题复习(1)

软件项目管理计算题复习&#xff08;1&#xff09; 1.关键路径&#xff1a;决定项目最早完成的一系列的活动。网络图中最长的路&#xff0c;最少的时差&#xff0c;总是差为0&#xff0c;也是关键路径。 2.最短路径也是最短工期 3.总时差&#xff1a;最晚开始-最早开始最晚结…...

BMI160 BOSCH/博世 六轴 加速度 陀螺仪 传感器

BMI160 6轴惯性运动传感器&#xff0c;采用MEMS传感器封装&#xff0c;将16位3轴加速度计和超低功耗3轴陀螺仪集成在一起。当加速度计和陀螺仪在全速模式下运行时&#xff0c;耗电典型值低至950A&#xff0c;仅为市场上同类产品耗电量的50%或者更低。 Bosch BMI160专为智能手机…...

ROS探索[wpr_simulation的编译]

遇到的多种挑战最终的解决方式是通过重新删除所有编译文件夹重新生成工程原因如下 第一次生成的catkin_make文件的时候针对环境变量进行了设置,如果不删除环境变量相关的设置则后续新装的工具工程都会受到影响掣肘Protocbuf相关问题系统中存在多个版本的Protocbuf,因此优先级…...

连接Oracle数据库失败(ORA-12514)故障排除

文章目录症状产生原因解决办法欢迎加下方我的微信&#x1f447;&#xff0c;拉你入学习群点击试看博主的专著《MySQL 8.0运维与优化》&#xff08;清华大学出版社&#xff09;ORA-12514的故障是很多新手在连接Oracle数据库时经常遇到故障&#xff0c;它通常表示无法连接到数据库…...

DevOps 学习笔记(一) | DevOps 简介及环境搭建

1. 环境配置 本次实验需要三台服务器CI/CD 服务器、应用服务器和Harbor 服务器 DevOps 步骤 程序员将代码 push 到代码仓库Jenkins 根据触发条件拉取代码到CI/CD 服务器Jenkins 使用 Maven 将代码 build 成 jar 包Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml…...

日志收集笔记(Filebeat 日志收集、Logstash 日志过滤)

1 FileBeat Filebeat 是使用 Golang 实现的轻量型日志采集器&#xff0c;也是 Elasticsearch stack 里面的一员。本质上是一个 agent &#xff0c;可以安装在各个节点上&#xff0c;根据配置读取对应位置的日志&#xff0c;并上报到相应的地方去。 1.1 FileBeat 安装与使用 …...

字节二面,原来是我对自动化测试的理解太浅薄了..

如何使用Python实现自动化测试 如果你入职一家新的公司&#xff0c;领导让你开展自动化测试&#xff0c;作为一个新人&#xff0c;你肯定会手忙脚乱&#xff0c;你会如何落地自动化测试呢&#xff1f;资深测试架构师沉醉将告诉你如何落地自动kan化测试&#xff0c;本次话题主要…...

2023雅虎邮箱不能注册?别急,这份教程教你成功注册雅虎邮箱

这几年&#xff0c;跨境电商的迅猛发展&#xff0c;越来越多人加入这片蓝海&#xff0c;跨境人拥有一个专业的邮箱账户显得尤为重要&#xff0c;它是商业交流和日常工作的必备工具。因此&#xff0c;雅虎邮箱成为了许多人的首选&#xff0c;全球范围内使用雅虎邮箱的人数是非常…...

Elasticsearch 自动补全 completion type

Elasticsearch 自带一种自动补全类型 completion 这种类型不在mapping文档里面有点坑。 先直接上例子。 建立 index,把我们要自动补全的字段设置为 completion 类型 或者直接设置为子类型 PUT /blogs_completion/ {"mappings": {"tech": {"properties…...

GB28181协议实现源码Android源码

一、GB28181规范 尽管在国标GB28181中并没有对“平台”进行明确的定义,但在规范中却多次提到“系统平台”、“管理平台”等词汇,在具体项目中、网络上的交流学习中,平台概念也是无处不在。笔者认为,GB28181平台就是视频联网系统中的上级平台、中间平台或下级平台,用于实现…...

HNU工训中心: 三人表决器及八人抢答器实验报告

工训中心的牛马实验 三人表决器&#xff1a; 实验目的 1) 辨识数字IC功能说明。 2) 测试数字集成门电路&#xff0c;掌握输出故障排除、使用注意事项。 3) 掌握逻辑函数搭建三人表决器。 2.实验资源 HBE硬件基础电路实验箱、万用表 74LS00与非门、74LS10 三个3输入与非门…...

split()用法注意事项

split()用法注意事项 这个要注意有些特殊的分割符&#xff0c;比如.&#xff0c;这个表示匹配任何字符&#xff0c;如果在split()中调用的话&#xff0c;会将任何字符都分隔开&#xff0c;比如&#xff1a; String[] split "se.lll".split("."); System…...

centos7配置静态网络常见问题归纳

系列相似配置与安装软件问题整理与归纳文章目录 安装pymysql库_pymysql库安装_张小鱼༒的博客-CSDN博客 解决pip更新的代码_pip更新代码_张小鱼༒的博客-CSDN博客 python当中的第三方wxPython库的安装解答_pip install wx_张小鱼༒的博客-CSDN博客 spark里面配置jdk后的编程…...

产品经理修炼指南【01】

最近看了点产品经理的书&#xff0c;觉得产品经理这个位置和程序员不太一样&#xff0c;程序员唯一考核的标准就是能不能完成工作任务、是否能完成工作代码&#xff0c;但是产品经理貌似不一样&#xff0c;就像我给刘曼说的&#xff0c;产品经理上可以接领导&#xff0c;下可以…...

NCRE计算机等级考试Python真题(十一)

第十一套试题1、以下选项对于import保留字描述错误的是&#xff1a;A.import可以用于导入函数库或者库中的函数B.可以使用from jieba import lcut 引入 jieba库C.使用import jieba as jb&#xff0c;引入函数库jieba&#xff0c;取别名jbD.使用import jieba 引入jieba库正确答案…...

cglib代理解析

工作原理 使用 <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version></dependency>对类和接口分别进行代理 DemoService package com.fanqiechaodan.user.service;/*** author fa…...

GFD563A101 3BHE046836R0101

GFD563A101 3BHE046836R0101关于高端涂布机张力控制系统方案的介绍高端涂布机张力控制系统方案涂布机是将具有某种功效的胶&#xff0c;或者油墨类物质均匀粘连在塑料薄膜、铝箔、纺织品等表面的机械设备。本系统从放卷到收卷共采用七台变频器&#xff0c;其中收放卷采用闭环张…...

SAP 采购定价过程字段解析

下面我们针对每一个字段进行解释和用途分析 &#xff1a; 1、 步骤&#xff1a;代表了创建PO时&#xff0c;哪个条件类型放到前面&#xff0c;哪个放到后面&#xff0c;如果步骤号相同&#xff0c;那就以谁先选择出来谁就在前面。 2、 计数&#xff1a;没有任何实际意义&a…...

技术洞察:如何通过数据预处理优化clip命令行图表生成性能

技术洞察&#xff1a;如何通过数据预处理优化clip命令行图表生成性能 【免费下载链接】clip Create charts from the command line 项目地址: https://gitcode.com/gh_mirrors/cli/clip 在数据可视化领域&#xff0c;clip作为一个命令行驱动的图表生成工具&#xff0c;为…...

SAR ADC与Sigma Delta ADC:速度与精度的技术博弈

1. ADC基础&#xff1a;模拟世界与数字世界的桥梁 当你用手机录音时&#xff0c;麦克风捕捉到的声波是连续变化的模拟信号&#xff0c;但手机存储的却是0101的数字文件。这个神奇转换的背后功臣就是模数转换器&#xff08;ADC&#xff09;。作为连接物理世界与数字系统的关键部…...

告别AP离线!深入浅出解析神州数码AC/AP注册机制:二层发现 vs. DHCP Option 43实战选型

神州数码无线网络部署实战&#xff1a;AC与AP注册机制深度解析 在企业无线网络部署中&#xff0c;AC&#xff08;无线控制器&#xff09;与AP&#xff08;无线接入点&#xff09;的注册机制是构建稳定无线网络的基础环节。神州数码作为国内领先的网络设备提供商&#xff0c;其A…...

OpenClaw 3.28重磅发布:Grok搜索内置,高危操作迎来“保命”拦截机制

引言&#xff1a; 不仅仅是“草台”后的补救&#xff0c;更是智能体操作系统的成人礼 就在前两天&#xff0c;OpenClaw 之父 Peter 的一次“漏打包”操作&#xff0c;直接导致 3.22 版本大面积白屏&#xff0c;让无数开发者以为自己辛辛苦苦养了一周的“赛博小龙虾”就这么“死…...

Zynq AXI DMA实战:从零配置S_AXIS_S2MM到M_AXIS_MM2S的完整数据流(Vivado 2023版)

Zynq AXI DMA实战&#xff1a;从零配置S_AXIS_S2MM到M_AXIS_MM2S的完整数据流&#xff08;Vivado 2023版&#xff09; 在嵌入式系统开发中&#xff0c;高效的数据传输往往是性能瓶颈所在。Zynq系列SoC凭借其独特的ARM处理器与FPGA可编程逻辑的紧密结合&#xff0c;为高性能数据…...

leetcode-hot100-15动态规划

4.动态规划 文章目录 4.动态规划 70.爬楼梯 方法一:c 方法一:js 方法一:java 118. 杨辉三角 方法一:c 方法一:js 方法一:java 198. 打家劫舍 方法一:c 方法一:js 方法一:java 279. 完全平方数 方法一:c 方法一:js 方法一:java 322. 零钱兑换 方法一:c 方法一:js …...

高效清理重复文件:三步释放50GB存储空间的智能解决方案

高效清理重复文件&#xff1a;三步释放50GB存储空间的智能解决方案 【免费下载链接】czkawka 一款跨平台的重复文件查找工具&#xff0c;可用于清理硬盘中的重复文件、相似图片、零字节文件等。它以高效、易用为特点&#xff0c;帮助用户释放存储空间。 项目地址: https://gi…...

2026年6月PMP考试:70天冲刺,这5个“备考误区”正在偷偷浪费你的时间

大家好&#xff0c;我是老陈。 今天这篇&#xff0c;我不想再写什么“每天学几小时、刷多少题”了。 前面写了好几篇&#xff0c;该说的都说了。今天咱们换个角度&#xff0c;聊聊那些看似正确、实则坑人的备考误区。 为什么聊这个&#xff1f;因为我发现一个规律&#xff1…...

如何高效获取六大网盘直链下载地址:开源工具的实用指南

如何高效获取六大网盘直链下载地址&#xff1a;开源工具的实用指南 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 在当今数字时代&#xff0c;网盘已成为我们日常工作和学习中不可或缺的工具…...

PyTorch 2.8镜像多场景落地:从Diffusers文生视频到Transformers微调全流程

PyTorch 2.8镜像多场景落地&#xff1a;从Diffusers文生视频到Transformers微调全流程 1. 开箱即用的深度学习环境 PyTorch 2.8深度学习镜像基于RTX 4090D 24GB显卡和CUDA 12.4深度优化&#xff0c;为各类AI任务提供稳定高效的运行环境。这个镜像最吸引人的特点是它的"万…...