索引调优的一点基础知识

news2024/9/20 15:06:06

索引是什么

请添加图片描述

请添加图片描述

通过 show profile for query 1;
可以查看该查询语句执行的整个过程,则我们就能分析出那部分是需要优化的

索引是帮助Mysql高效获取数据的数据结构
索引存储在文件系统中
索引的文件存储形式与存储引擎有关
索引文件的结构
hash 范围查找不方便
二叉树 深度过深,造成io次数变长
B树
B+树

Mysql用B+树

用InnoDB引擎 用B+树建立索引的规则

1、当用主键创建索引时(有主键时mysql会自动会主键创建索引),叶子节点直接存储记录,如果没有主键则选择唯一键,如果没有唯一键则会生成6位的row_id来作为主键
2、当用其他字段创建索引时,会进行两次B+的寻找,第一次B+树叶子节点存放的是该记录的主键,然后通过找到的主键再去另一个B+树中寻找,这个B+的叶子节点存放的就是记录了。

用MyISAM引擎 用B+树建立索引的规则

B+树的叶子节点存储的是磁盘地址,找到后需要访存一次找到记录

通过索引进行调优

索引的基本知识

1、大大减少了服务器需要扫描的数据量
2、帮助服务器避免排序和临时表
3、将随机IO变成顺序IO

索引的用处

加快我们的数据访问

回表

就是用不是主键的列建立了普通索引,普通索引的b+树的叶子节点存储的不是记录,而是主键的值,这时候就需要回表,回到由主键建立的B+树,这是叶子节点才是存储的记录。

覆盖索引

就是当用普通索引查找时,且只查找id(主键),则不用回表一次即可查到

select * from table1 where name='zhangsan'
select id from table1 where name='zhangsan'(此时就是覆盖索引)

最左匹配

在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。

索引下推

只有组合索引时,才有下推
例如 where 关于 name 和 age
正常按最左匹配,先找到符合name的数据放入到mysql的server层中
再到server层按照age进行数据过滤

下推后
直接从存储引擎拉去数据的时候直接按照name和age做判断,符合的结果返回给mysqlserver

哈希索引

用链表法的那个就是哈希表,只有memory的存储引擎显示支持哈希索引

聚簇索引 与 非聚簇索引

聚簇索引(InoDB是聚簇)就是数据文件跟索引文件紧凑在一起存放,
而非聚簇索引则相反

优化小细节(重点)

1、当使用索引进行查询时,尽量不要用表达式,计算应发到业务层而不是数据库层
2、尽量使用主键查询而不是其他索引,主键索引不会回表
3、使用索引来排序
4、union all in or 推荐使用in
5、范围列可以用到索引
6、强制类型转换会全表扫描
7、更新频繁,区分度不高的字段不建议当作索引
8、能使用limit就用limit
9、连表查询最好不超过3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/391835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习-第T2周——彩色图片分类

深度学习-第T2周——彩色图片分类深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、归一化4、可视化图片四、构建简单的CNN网络五、编译并训练模型1、设置超参数2、编写训练函数六、预测七、模型评估深度学习-…

产品经理如何去做需求分析,建议收藏

目录 一、需求收集 1. 产品需求 2. 功能需求 3. 迭代需求 二、需求分析 1. 系统了解需求(5W2H法) 2. 判断需求真实性 3. 分析现有解决方案-竞品分析 4. 行业结构分析 5. 总结 三、方案验证 四、商业模式 五、路线规划 六、战略制定 七、总…

基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…

监控视频模糊看不清怎么处理提高监控视频清晰度?

随着监控设备的日益普及,监控视频的画质也成为了人们关注的焦点。然而,很多人反映监控视频画质不佳,有些甚至看不清。那么,对于这样的问题,我们该如何去处理呢?监控画面模糊变清晰处理方法如下:…

网上购物网站的设计

技术:Java、JSP等摘要:本文介绍了JSP和JAVA等相关技术,针对网上购物系统的实际需求,设计开发了一个基于JSP的小型电子商务网站也就是网上购物系统,。在设计开发中,采用的是SSH框架(strutsspring…

一篇教你解决如何在不加锁的情况下解决多线程问题!

怎样在不加锁的情况下解决线程安全问题,你需要了解lock free和wait free这两个概念,在此之前我们先从最简单的有锁编程开始。 我们知道,多线程同时修改共享变量时会出现数据不一致的问题,比如多个线程同时对一个变量加1&#xff…

angular自定义实现管道

参考angular官方文档角 - 管 (angular.io)选择描述name要在模板绑定中使用的管道名称。 通常使用较小的驼峰大小写,因为名称不能包含连字符。pure?如果为 true,则管道是纯的,这意味着仅当该方法的输入参数时才调用该方法 改变。默认情况下&a…

JavaScript基础四、集合类型

零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…

C++源程序的构成————学习笔记

以下内容为&#xff0c;在学校上课时的课堂总结&#xff0c;偶尔我也会扩展一些内容内容仅供参考&#xff0c;欢迎大佬的指正简单的C程序#include <iostream> using namespace std;int main() {int x0;int y 0;cout << "请输入x,y的值"<<endl;cin…

计算机网络第八版——第二章课后题答案(超详细)

第二章 该答案为博主在网络上整理&#xff0c;排版不易&#xff0c;希望大家多多点赞支持。后续将会持续更新&#xff08;可以给博主点个关注~ 第一章 答案 【2-01】物理层要解决哪些问题&#xff1f;物理层的主要特点是什么&#xff1f; 解答&#xff1a;物理层考虑的是怎…

《C++代码分析》第二回:函数重载const char* ,char*,const char[],char[]汇编代码上的区别

一、前言 C相比C是支持函数重载的&#xff0c;现在我们详细探讨一下C函数重载与类方法承载。 二、案例代码 我们编译如下代码&#xff0c;同样的我们关闭代码优化&#xff0c;删除符号链接文&#xff08;.pdb&#xff09; #include "windows.h" #include "w…

php宝塔搭建部署实战兰空图床程序网站PHP源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Lsky Pro兰空图床程序网站PHP的源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP8.0 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xff0c;宝塔添加…

开源监控服务uptime-kuma

好久没写文章了&#xff0c;刚好最近用了一个开源的监控服务&#xff0c;感觉蛮有意思的&#xff0c;记录一下 &#xff08;一&#xff09;安装 uptime-kuma安装方式有几种&#xff0c;这里当然是选择大家都爱的docker,一条命令搞定 docker run -d --restartalways -p 3001:…

Linux内核调度策略、优先级、调度类

Linux内核调度策略、优先级、调度类一、Linux 内核支持调度策略二、进程优先级三、公平调度 CFS 与其它调度3.1、调度类3.2、公平调度类 CFS3.3、运行队列3.4、调度进程3.5、调度时机四、RCU机制与内存屏障一、Linux 内核支持调度策略 先进先出调度&#xff08;SCHED_FIFO&…

Linux常用命令操作

文件目录操作 查看文件列表 ls #输出列表信息 ls -l #输出详细列表信息 ls -a #输出隐藏文件 ls -la #输出包含的隐藏文件及详细信息 ll # ls-l的缩写rwx分别对应读取&#xff0c;写入&#xff0c;执行权限&#xff0c;前面有d代表是文件夹 创建文件 touch file.txt #创建…

java String类 万字详解(通俗易懂)

目录 一、前言 二、介绍和溯源 三、String类常用构造器 1.String() 2.String(byte[] bytes) 3.String(char[] value) 4.String(char[] value, int offset, int count) 5.String(String original) Δ演示 : 四、不同方式创建String类对象的区别 1.直接赋值的方式 2.常规new…

炫云渲染质量功能测试

炫云已经支持优化渲染质量&#xff0c;分别是保守优化、中度优化和深度优化&#xff0c;使用后效果图的渲染时间会有所缩短&#xff0c;尤其对低版本V-Ray和参数设置不当的场景非常有效&#xff0c;能大幅提升渲染速度及节省渲染费用&#xff0c;当然最终效果图有可能有稍许差异…

spark兼容性验证

前言 Apache Spark是专门为大规模数据处理而设计的快速通用的计算引擎&#xff0c;Spark拥有Hadoop MapReduce所具有的优点&#xff0c;但不同于Mapreduce的是Job中间输出结果可以保存在内存中&#xff0c;从而不再需要读写HDFS&#xff0c;因此Spark能更好的适用于数据挖掘与…

二分与三分(备赛中)

A.愤怒的牛儿 思路&#xff1a;找出最长距离&#xff0c;与最小距离&#xff0c;用二分法判断&#xff0c;如果当前距离满足放牛要求&#xff0c;就把距离区间lmid1;如果距离不合适就说明当前距离太大了&#xff0c;把区间变小rmid-1;最后直到l<r不满足时退出&#xff0c;输…

Spark SQL优化机制

Spark SQL优化机制Spark SQLCatalyst 优化器逻辑优化物理优化TungstenUnsafe RowWSCGRDD 缺点 : RDD的算子都是高阶函数 &#xff0c;Spark Core 不知函数内的操作&#xff0c;只能闭包形式发给 Executors&#xff0c; 无法优化 DataFrame 不同点&#xff1a; 数据的表示形式…