Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL高级--性能优化之索引

MySQL高级--性能优化之索引

原创
作者头像
Java学术趴
发布于 2022-11-16 05:48:36
发布于 2022-11-16 05:48:36
5150
举报
文章被收录于专栏:Java全栈·Java全栈·

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。

☠️每日毒鸡汤:一件事你犹豫去不去做,那就是该立即动身做的。

1. 索引优化分析

1.1 手写SQL和机读SQL

机器读的SQL和我们写的SQL是不一样的。

几种表关联方式

1.2 索引

1.2.1 索引概念
  • 索引(index)是帮助 MySQL高效查询获取数据的数据结构
  • 索引的本质:索引是数据结构,是一种排好序的快速查找数据结构。
  • 索引的目的在于提高查询效率,可以类比字典,如果要查”mysql“这个单词,我们肯定需要定位到 m 字母,然后从上往下找y字母,在找到剩下的 sql。如果没有索引,那么你可能需要 a---z 依次查询。
  • 索引之所以查的快是因为已经排序好了,所以查询的速度比较快。
  • 在数据之外, 数据库系统还维护着满足特定查找算法的数据结构, 这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。

左边是数据表,一共两列七条记录,最左边的是数据记录的物理地址。

1.2.2 索引的分类
  • 单一索引: 即一个索引只包含单个列,一个表可以有多个单列索引。
  • 唯一索引: 索引列的值必须唯一,但允许为空。
  • 复合索引: 即一个索引包含多个列。
1.2.3 MySQL索引结构
  • BTree索引: 检索过程
  • Hash索引
  • full-text
  • R-Tree索引
1.3.4 适合创建索引的场景
  • 主键自动建立一个唯一索引。
  • 频繁作为查询条件的字段应该创建索引。
  • 查询中与其他表关联的字段,外键关系建立索引。
  • 频繁更新的字段不适合创建索引(因为每次更新不单单的更新表中的数据,还要更新索引)
  • where条件里用不到的字段不创建索引。
  • 单键/组合索引的选择问题?(一般在高并发的情况下倾向创建组合索引)
  • 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度(原始数据已经排序好了,不用在使用索引进行排序)
  • 查询中统计或者分组字段(分组的前提是数据已经排序好了,既然排序就与索引息息相关)
1.3.5 不适合创建索引的场景
  • 表记录少:原始数据很少,不需要索引查询的速度也非常快。
  • 经常增、删、改的表:提高查询速度的同时,在进行数据增删改的操作时, 操作原始数据的同时还需要操作索引文件,会占用大量的性能。
  • 数据重复且分布平均的表字段:索引一般使用在经常查询和经常排序的字段。如果某个字段存在大量重复的元素,为它建立索引就没有太大的意义。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL高级--性能优化之Explain分析SQL
id: select查询的序列号(是一组数字),表示查询中执行select子句或操作的顺序。分为三种情况
Java学术趴
2022/11/16
1K0
MySQL高级--性能优化之Explain分析SQL
MySQL高级--性能优化之索引使用
如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最前列并且不跳过索引中的列。
Java学术趴
2022/11/16
7420
MySQL连接查询&索引介绍
但是MySQL执行的时候,并不是按顺序执行的,MySQL执行sql语句是从from开始执行的,上面这条语句的执行顺序是:
贪挽懒月
2021/04/12
2.6K0
MySQL高级--性能优化查询截取分析
排序时索引也用到了,只不过此时该索引不是用来查询,而是用来排序,explain没有展示出来
Java学术趴
2022/11/16
1.2K0
MYSQL高级篇-----索引优化分析
由于有些mysql不能使用full join,不过可以换种方法表示 A 的独有 + AB 共有 + B的独有 union本身就可以去重 所以可以这样使用
默 语
2024/11/20
7620
MYSQL高级篇-----索引优化分析
MySQL索引原理以及查询优化「建议收藏」
一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。
全栈程序员站长
2022/07/21
5210
MySQL索引原理以及查询优化「建议收藏」
MySql优化
官方定义:索引是帮助mysql高效获取数据的数据结构。划重点:数据结构。在数据之外,数据库系统还维护了一套满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这种数据结构就是索引,可以简单的理解为”排好序的快速查找数据结构”。索引本身也很大,不可能全部存储在内存,通常以索引文件的形式存储在磁盘中。
全栈程序员站长
2022/08/05
7660
MySql优化
MySQL索引原理以及查询优化
一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。
yaphetsfang
2020/07/30
1.1K0
MySQL索引原理以及查询优化
MySQL高级--性能优化之慢日志查询
默认情况下会给一个缺省的文件host_name-slow.log,当我们指定路径之后就会覆盖这个默认的缺省文件路径
Java学术趴
2022/11/16
5610
MySQL高级--性能优化之慢日志查询
MySql性能优化
与客户端进行连接的服务 主要完成一些类似连接处理,授权认证 及相关的安全方案. 在该层上引入了连接池的概念,
JokerDJ
2023/11/27
3290
MySql性能优化
前大众点评资深研发专家对Mysql索引的解析与底层数据结构的解刨
mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引。可简单理解为排好序的快速查找数据结构。如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。
美的让人心动
2018/06/14
8950
前大众点评资深研发专家对Mysql索引的解析与底层数据结构的解刨
MySQL 之 索引原理与慢查询优化
浏览目录 一 索引介绍 二 索引方法 三 索引类型 四 聚合索引和辅助索引  五 测试索引 六 正确使用索引 七 组合索引 八 注意事项 九 查询计划 十 慢日志查询 十一 大数据量分页优化 1. 索引介绍   一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。 说起加速查询,就不得不提到索引了。 什么索引:    简单的说,相当于图书的目录,可以帮助用
人生不如戏
2018/04/10
1.3K0
MySQL 之 索引原理与慢查询优化
MySQL优化方案(一)优化SQL脚本与索引
MySQL的优化方案有哪一些? 本文记录MySQL优化方案 ,梗概如下: 优化SQL 优化索引 (一)优化SQL 1、通过MySQL自有的优化语句 优化SQL语句,通过脚本命令来了解执行率较低的语句,
赵腰静
2018/03/09
2.5K0
MySQL优化方案(一)优化SQL脚本与索引
原 荐 MySQL-性能优化-索引和查询优化
MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理
秋日芒草
2018/06/06
8200
【MySQL高级】索引
1.中央处理器(英文Central Processing Unit,CPU)是一台计算机的运算核心和控制核心。CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。
陶然同学
2023/02/24
5200
【MySQL高级】索引
相关推荐
MySQL高级--性能优化之Explain分析SQL
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档