MySQL索引优化

Mysql 索引优化 MySQL 是 Java 开发人员常用的关系型数据库,索引优化是提升查询性能的关键。MySQL 的索引结构主要基于 B+ 树,B+ 树是一种多路平衡查找树,所有数据存储在叶子节点中,非叶子节点仅存储索引键和子节点指针。B+ 树的高度较低,减少了查找路径长度,适合大规模数据的插入、删除和查找操作。在 MySQL 中,B+ 树的每个节点对应一个磁盘页,充分利用磁盘 I/O 效率,减少查询时的磁盘访问次数。 MySQL 提供了多种索引类型,包括聚簇索引、辅助索引、单列索引、多列索引、覆盖索引和前缀索引。聚簇索引( 阅读详情

个人想法:所谓的索引优化无非就是引擎、索引类型的选择,索引顺序的排列,索引排序的理解!

1)我会首先考虑采用哪种存储引擎:INNODB 、MYISAM 、ARCHIVE 、MEMORY,因为索引是在引擎层实现的。

2)接下来考虑应该采用哪种索引:B-TREE 和HASH索引,B-TREE更适合范围查询,HASH更适合精确查询。

3)利用好EXPLAIN 工具分析查询语句:EXPLAIN select * from 表名 ;

   注意rows项和以及type项,分别表示了查询了多少行,以及查询表的方式。

4)创建索引时列的顺序,经验选择法则不考虑排序与分组时推荐将选择性高的前缀放在索引列顺序的前面

计算完整列的选择性:不重复索引列的前缀和数据表记录总数的比值。推荐—> 【0.0310】

示例1:select count(distinct LEFT(列名,3))/count(*) as col_3,count(distinct LEFT(列名,4))/count(*) as col_4,

                     count(distinct LEFT(列名,5)/count(*))as col_5,count(distinct LEFT(列名,6))/count(*)as col_6

         FROM 表名;

解析:通过对不同前缀长度计算来记录选择性,推荐值接近0.0310的前缀长度作为前缀索引;

5)聚簇索引   :存储数据的方式而非一种单独的索引类型

                推荐主键自增AUTO_INCREMENT,它确保了insert数据存储的连续性,主键页被顺序的记录填满;

                如果未使用自增AUTO_increment,在进行数据insert操作时会造成随机I/O,innodb引擎不得不频繁的做页分裂操作以插入数据,造成了大量的碎片;

6)覆盖索引  :一个索引包含所查询字段的值,覆盖索引必须存储索引咧的值,所以只有B-TREE索引符合,并且需要考虑引擎momery不支持覆盖索引;

7)索引排序   : 设(col1,col2,col3,col4,col5)             索引列顺序是(col1,col3,col5)

壹)where col1=‘常量’ order by col3,col5   \G    虽然order by 不满足索引醉左前缀,但是col1是常量;组合成功

贰)where col1=‘常量’ order by col3 desc  \G     两列组合排序;

叁)where col1>‘常量’ order by col3,col5   \G   依然成立因为它符合索引的顺序

MySQL索引-索引优化 索引优化,主要包括应该建立索引的情况,不应该建立索引的情况,常见的索引优化方式,慢查询优化和深分页优化 阅读详情

相关推荐

【MySQL】什么是索引?如何优化索引?

读完这篇文章,你会知道什么是索引?什么时候适合使用索引?什么时候不适合使用索引?如何优化索引?

技术杠精的博客 1429

Could not find first log file name in binary log index file

MySql Slave报警,错误如下: Relay_Master_Log_File: mysql-bin.0506435 Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file na

lwei_998的专栏 5690

Cadence 17.2 OrCAD原理图库实战:从零创建电阻/电容/LED元件(附封装技巧)

本文以Cadence 17.2 OrCAD为核心,详细讲解了如何从零开始工程化地创建电阻、电容、LED等原理图库元件。内容涵盖库架构设计、符号绘制、引脚属性管理、封装关联技巧以及设计规则检查,旨在帮助硬件工程师构建规范、可复用且易于维护的元件库,为高效PCB设计奠定坚实基础。

weixin_29195615的博客 399

MySQL报错-错误代码、出错信息对照大全

mysql

qq_44981598的博客 5293

COLMAP在Ubuntu下的编译陷阱与实战避坑指南——从环境配置到三维重建全流程

本文详细介绍了在Ubuntu系统下编译和配置COLMAP三维重建工具的全流程,包括环境准备、依赖库安装、CUDA加速配置以及常见编译问题的解决方案。通过实战案例演示了从图像特征提取到稠密重建的完整步骤,并提供了性能优化和问题排查的实用技巧,帮助用户高效完成三维重建任务。

weixin_29003437的博客 1048

S32K3基于EB配置GPT触发WDG的实战解析

本文详细解析了S32K3 MCU基于EB tresos工具配置GPT定时器触发看门狗(WDG)的实战方法。通过分析协同工作机制、MCAL配置步骤及代码实现,帮助开发者构建可靠的硬件监控系统,提升汽车电子系统的安全性与实时性。

f9g0h的博客 204

MySQL查询优化

所谓的查询优化无非就是使用关联查询,其中难点也就是优化器,然而多操作也就水到渠成的那么一回事了。 关联查询中我认为应该关注的是多表查询,还是以经典面试题来做演示,看示例吧! 1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 2.课程表 Course(CID,Cname,TID) --C...

initialize1306的博客 187

Coze智能体网页集成实战:从零搭建免登录AI助手

本文详细介绍了如何利用Coze Chat SDK从零开始为网站集成免登录AI助手。通过获取访问令牌和智能体ID,仅需几行JavaScript代码即可将功能完整的对话窗口嵌入网页,实现开箱即用的智能交互。文章重点讲解了核心部署步骤、会话隔离方案以及UI深度定制方法,帮助开发者快速打造贴合品牌、提升用户体验的网页AI助手。

gold8的专栏 556

MySQL索引优化总结

前言:相信大家都知道索引可以大大提高MySQL的检索速度,但是真正在平时工作中写SQL,真的会考虑到这条SQL如何能够用上索引提升执行效率?本篇博客详细的介绍了索引优化的20个原则,只要在工作中能够随时应用到,相信你写出的SQL能够命中索引,效率杠杠的。 一、索引的分类 1.1、普通索引、主键索引和唯一索引 1.2、聚集索引和非聚集索引 1.3、联合索引最左匹配原则 1.4、索引覆盖和回表 1.5、前缀索引 1.6、索引合并 1.7、索引下推 二、索引优化规则 查询的条...

何哥的博客 1万+

【水下小目标检测】SWIPENet与样本重加权:应对模糊与噪声的深度学习策略

本文深入探讨了水下小目标检测的挑战与解决方案,重点介绍了SWIPENet网络架构与IMA样本重加权算法。通过空洞卷积模块、特征金字塔重构和多尺度预测机制,SWIPENet有效提升了模糊目标的检测精度。结合Invert Multi-Class Adaboost算法,系统性地解决了水下环境中的样本不均衡问题,在URPC数据集上实现了48.8%的mAP,特别适合海洋生物检测等应用场景。

weixin_29057163的博客 343

使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台

这家虚构的金融科技 SaaS 组织在 Microsoft Azure 上构建了一个现代化的多区域架构,以实现高可用性、主动安全性和简化的 DevSecOps 工作流。如果您是 DevOps 从业者、SRE 专业人士或致力于创建弹性、可扩展且安全的金融科技解决方案的技术领导者,您将从中获得可直接应用于您自身项目的见解和经验教训。与大多数快速扩张的金融科技公司一样,他们需要确保不间断的正常运行时间、坚不可摧的安全性以及快速的功能交付,以满足全球用户群的需求。即使是短暂的中断也会损害用户的信心和忠诚度。

介绍AWS Azure GCP devops Terraform 等技术 1298

【MySQL索引】4索引优化

COUNT(*):最常用且效率最高的方法,大多数现代数据库系统对此做了专门的优化。COUNT(1):在性能上与 COUNT(*) 基本相同,大多数数据库系统会将它们处理得一样快。COUNT(具体字段):可能会更慢,特别是在字段上没有索引时。它只计算非 NULL 的字段值,因此可能需要扫描整个表来完成计数。

ChanceZhou的博客 1895

ST03N 里看不到 SE38 / SA38?别急,这不是没记录,而是被换了名字

摘要:SAP系统中SE38/SA38事务码在ST03N统计中可能"隐身",因其对话步骤被归集到对应的程序名(如SE38→RSABAPPROGRAM)。ST03N侧重工作负载聚合统计,而STAD提供短期明细记录。正确排查方法是:在ST03N中搜索程序名而非事务码,再通过STAD验证具体使用情况。这一现象在权限整改和审计中易造成误判,建议将程序名纳入常规监控,并区分ST03N(趋势分析)与STAD(事实校验)的不同用途。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 953

MYSQL 索引详解及索引优化、分析

索引在MySQL中是比较常见的,索引就相当于我们看书的目录,它是帮助MySQL高效获取数据的一种数据结构,主要用来提高数据的检索效率,减少IO成本,同时通过索引对数据进行排序,降低排序成本。2.索引的作用加快查询速度:通过索引快速定位数据。保证数据唯一性:如主键和唯一索引。优化排序和分组:索引可以加速ORDER BY和GROUP BY操作。用二级索引查数据时,会先检二级索引中的 B+Tree 的索引值(商品编码,product_no),找到对应的叶子节点,然后获取主键值,然后再通过主键索引。

2201_75656709的博客 1860

Aurix TC3xx系列MCU ADC模块简介(一)

简单介绍英飞凌Aurix TC3xx系列单片机ADC模块的特点及内部结构。

m0_38045338的博客 6360

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Mysql索引优化

如果一个索引包含了查询所需的所有字段(覆盖索引),会优先选择,因为可以避免回表。在 MySQL(尤其是 InnoDB)里,索引并不是建了就一定能用。对联合索引(多列索引),只有按照索引定义的最左字段开始查询时才能用到索引。来选择是否走索引、以及用哪一个索引。小表(几十或几百行),优化器可能认为全表扫描比走索引更快。索引扫描时,先过滤区分度高的字段,能显著减少扫描范围。,如果 a 和 b 分别有索引,通常不会用。(a 有索引,b 无索引)→ 可能全表扫描。, 索引优化器认为过滤性差,往往不用索引。

不积跬步无以至千里 1265

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MYSQL索引优化

通过合理使用索引、EXPLAIN分析查询执行计划、优化查询语句,可以显著提升MySQL查询的性能。注意,在创建索引时要权衡读取性能与写入性能的平衡,避免过多创建索引,同时选择合适的索引类型和组合索引。

wolf23151269的博客 1526

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MySql的索引优化

select查询的序列号,表示查询中执行select子句或操作表的顺序。id相同时,执行顺序由上至下。id不同,如果是子查询,id的序号会递增,id值越大优先级越高,则先被执行。id相同和不同都存在时,id相同的可以理解为一组,从上往下顺序执行,所有组中,id值越大,优先级越高越先执行。代码:#id相同时,执行顺序是从上往下#id不相同时,执行顺序是从下往上。

迷之自信的代码搬运工 1411

mysql索引优化

本文介绍了MySQL索引相关命令、索引下推(ICP)优化功能、常见SQL优化技巧、索引设计原则以及分页查询和关联查询的优化方法。通过FORCE INDEX、USE INDEX和IGNORE INDEX命令可以强制或建议MySQL使用特定索引。索引下推(ICP)在MySQL 5.6+中引入,通过在索引层进行部分WHERE条件过滤,减少回表次数,提升查询效率。文章还详细探讨了Order by与Group by的优化、filesort文件排序的原理、索引设计的原则以及分页查询和关联查询的优化策略,如使用覆盖索引、

weixin_58611042的博客 1087

MySQL 索引及SQL优化

MySQL 索引设计及失效情况,SQL优化

青竹暖回阳的博客 2318

mysql索引优化有几种_mysql索引优化

索引类型从物理存储角度上,索引可以分为聚集索引和非聚集索引。1.聚集索引(Clustered Index)聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引。2.非聚集索引(Non-clustered Index)非聚集索引并不决定数据在磁盘上的物理排序,索引上只包含被建立索引的数据,以及一个行定位符 row-locator,这个行定位符,可以理解为一个聚集索引物理排序的指针,通过这个指...

weixin_29000119的博客 2098

了解Mysql优化吗?如何优化索引?

也就是10条数据,放到server层的结果集中,返回给客户端。可以看出,当offset非0时,server层会从引擎层获取到。

dsgdauigfs的博客 1504
上一篇: Oracle分区浅试
下一篇: mysql5.7二进制安装
initialize1306
博客等级 码龄11年 3粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值