搞懂索引,真的很重要

惊!MySQL 5.6+创建索引真的不锁表?10分钟带你彻底搞懂 经过今天的分享,相信大家都对MySQL创建索引时不锁表这一特性有了全新的认识。无论是背后的原理还是实际应用场景下的表现,我们都进行了详细的解析。希望这篇文章不仅帮助你增长了见识,更能让你在未来的工作中更加得心应手。期待下次再见,祝你好运,编程愉快!以上就是关于“MySQL创建索引时不锁表”的完整介绍。通过本文的学习,你应该已经掌握了这项技能背后的秘密,并且了解到如何正确地运用它来提升工作效率。记住,最好的学习方法就是不断实践,现在就去试试看吧! 阅读详情

什么是索引?

索引是辅助存储引擎高效获取数据的一种数据结构。

很多人形象的说索引就是数据的目录,便于存储引擎快速的定位数据。

索引的分类

我们经常从以下几个方面对索引进行分类

从数据结构的角度对索引进行分类

  • B+tree

  • Hash

  • Full-texts索引

从物理存储的角度对索引进行分类

  • 聚簇索引

  • 二级索引(辅助索引)

从索引字段特性角度分类

  • 主键索引

  • 唯一索引

  • 普通索引

  • 前缀索引

从组成索引的字段个数角度分类

  • 单列索引

  • 联合索引(复合索引)

数据结构角度看索引

下表是MySQL常见的存储引擎InnoDB,MyISAM和Memory分别支持的索引类型

InnoDBMyISAMMemory
B+tree索引YesYesYes
Hash索引NoNoYes
Full-text索引YesYesNo

在实际使用中,InnoDB作为MySQL建表时默认的存储引擎

对上表进行横向查看可以了解到, B+tree 是MySQL中被存储引擎采用最多的索引类型。

这里浅尝辄止的谈一下 B+tree 与 Hash 和红黑树的区别。

B+tree和B-tree

1970年, R.Bayer 和 E.Mccreight 提出了一种适用于外查找的平衡多叉树——B-树,磁盘管理系统中的目录管理,以及数据库系统中的索引组织多数采用 B-Tree 这种数据结构。--数据结构C语言版第二版 严蔚敏

B+tree是B-Tree的一个变种。(哦,对了,B-tree念B树,它不叫B减树。。。)

B+tree只在叶子节点存储数据,而B-tree非叶子节点也存储数据。

因此,B+tree单个节点的数量更小,在相同的磁盘IO下能查询更多的节点。

另外B+tree叶子节点采用单链表链接适合MySQL中常见的基于范围的顺序检索场景,而B-tree无法做到这一点。

B+tree和红黑树

对于有N个叶子节点的B+tree,搜索复杂度为O(logdN) ,d是指degree是指B+tree的度,表示节点允许的最大子节点个数为d个,在实际的运用中d值是大于100的,即使数据达到千万级别时候B+tree的高度依然维持在3-4左右,保证了3-4次磁盘I/O就能查到目标数据.

从上图中可以看出红黑树是二叉树,节点的子节点个数最多为2个,意味着其搜索复杂度为 O(logN) ,比B+树高出不少,因此红黑树检索到目标数据所需经理的磁盘 I/O 次数更多。

B+tree索引与Hash表

范围查询是MySQL数据库中常见的场景,而Hash表不适合做范围查询,Hash表更适合做等值查询,另外Hash表还存在Hash函数选择和Hash值冲突等问题。

因为这些原因, B+tree 索引要比Hash表索引有更广的适用场景。

物理存储角度看索引

MySQL中的两种常用存储引擎对索引的处理方式差别较大。

InnoDB的索引

首先看一下InnoDB存储引擎中的索引,InnoDB表的索引按照叶子节点存储的是否为完整表数据分为聚簇索引和二级索引。

全表数据就是存储在聚簇索引中的。

聚簇索引以外的其它索引叫做二级索引。

下面结合实际的例子介绍下这两类索引。

create table workers
 (
     id    int(11)     not null auto_increment comment '员工工号',
     name  varchar(16) not null comment '员工名字',
     sales int(11) default null comment '员工销售业绩',
     primary key (id)
 ) engine InnoDB
   AUTO_INCREMENT = 10
   default charset = utf8;
 
 insert into workers(id, name, sales) values (1, '江南', 12744);
 insert into workers(id, name, sales) values (3, '今何在', 14082);
 insert into workers(id, name, sales) values (7, '路明非', 14738);
 insert into workers(id, name, sales) values (8, '吕归尘', 7087);
 insert into workers(id, name, sales) values (11, '姬野', 8565);
 insert into workers(id, name, sales) values (15, '凯撒', 8501);
 insert into workers(id, name, sales) values (20, '绘梨衣', 7890);

我们现在自己的测试数据库中创建一个包含销售员信息的测试表workers

包含id(主键),name,sales三个字段,指定表的存储引擎为InnoDB。

然后插入8条数据

这个例子当中,workers表的聚簇索引建立在字段id上

为了准确模拟,我们先把主键id插入 b+tree 得到下图

然后在此图基础上,我画出了高清版。

从图中可以看到,聚簇索引的每个叶子节点存储了一行完整的表数据,叶子节点间采用单向链表按id列递增连接,可以方便的进行顺序检索。

InnoDB表要求必须有聚簇索引,默认在主键字段上建立聚簇索引,在没有主键字段的情况下,表的第一个NOT NULL 的唯一索引将被建立为聚簇索引,在前两者都没有的情况下,InnoDB将自动生成一个隐式自增id列并在此列上创建聚簇索引。

接着来看二级索引。

还以刚才的workers表为例

我们在name字段上添加二级索引index_name

alter table  workers add index  index_name(name);

同样我们画出了二级索引index_name的B+tree示意图

图中可以看出二级索引的叶子节点并不存储一行完整的表数据,而是存储了聚簇索引所在列的值,也就是

workers表中的id列的值。

这两张示意图中B+tree的度设置为了3 ,这也主要是为了方便演示。

实际的B+tree索引中,树的度通常会大于100。

说了聚簇索引和二级索引 肯定要提到回表查询。

由于二级索引的叶子节点不存储完整的表数据,所以当通过二级索引查询到聚簇索引的列值后,还需要回到局促索引也就是表数据本身进一步获取数据。

比如说我们要在workers表中查询 名叫吕归尘的人

select * from workers where name='吕归尘';

这条sql通过name='吕归尘'的条件

在二级索引index_name中查询到主键id=8 ,接着带着id=8这个条件

进一步回到聚簇索引查询以后才能获取到完整的数据,很显然回表需要额外的B+tree搜索过程,必然增大查询耗时。

需要注意的是通过二级索引查询时,回表不是必须的过程,当Query的所有字段在二级索引中就能找到时,就不需要回表,MySQL称此时的二级索引为覆盖索引或称触发了索引覆盖。

select id,name from workers where name='吕归尘';

这句sql只查询了id,和name,二级索引就已经包含了Query所以需要的所有字段,就无需回表查询。

explain select id,name from workers where name='吕归尘';

使用explain查看此条sql的执行计划

执行计划的Extra字段中出现了 Using where ; Using index 表明查询触发了索引index_name的索引覆盖,且对索引做了where筛选,这里不需要回表。

下面做对比,查询一下没有索引的

explain select id,name,sales from workers where name='吕归尘';

Extra为Using Index Condition 表示会先条件过滤索引,过滤完索引后找到所有符合索引条件的数据行,随后用 WHERE 子句中的其他条件去过滤这些数据行。Index Condition Pushdown (ICP)是MySQL 5.6 以上版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式。ICP开启时的执行计划含有 Using index condition 标示 ,表示优化器使用了ICP对数据访问进行优化。

如果你对此感兴趣去查阅对应的官方文档和技术博客。

这次我们简化来理解,不考虑ICP对数据访问的优化,

当关闭ICP时,Index仅仅是data access的一种访问方式,存储引擎通过索引回表获取的数据会传递到MySQL Server 层进行WHERE条件过滤。

Extra为Using where 只是提醒我们MySQL将用where子句来过滤结果集。这个一般发生在MySQL服务器,而不是存储引擎层。一般发生在不能走索引扫描的情况下或者走索引扫描,但是有些查询条件不在索引当中的情况下。

这里表明没有触发索引覆盖,进行回表查询。

MyISAM的索引

说完了InnoDB的索引,接下来我们来看MyISAM的索引

以MyISAM存储引擎存储的表不存在聚簇索引。

MyISAM索引B+tree示意图

MyISAM表中的主键索引和非主键索引的结构是一样的,从上图中我们可以看到

他们的叶子节点是不存储表数据的,节点中存放的是表数据的地址,所以MyISAM表可以没有主键。

MyISAM表的数据和索引是分开的,是单独存放的。

MyISAM表中的主键索引和非主键索引的区别仅在于主键索引B+tree上的key必须符合主键的限制,

非主键索引B+tree上的key只要符合相应字段的特性就可以了。

索引字段特性角度看索引

主键索引

  • 建立在主键字段上的索引

  • 一张表最多只有一个主键索引

  • 索引列值不允许为null

  • 通常在创建表的时候一起创建

唯一索引

  • 建立在UNIQUE字段上的索引就是唯一索引

  • 一张表可以有多个唯一索引,索引列值允许为null

我们演示创建索引

create table persons
 (
     id   int(11) not null auto_increment comment '主键id',
     eno  int(11) comment '工号',
     eid  int(11) comment '身份证号',
     veid int(11) comment '虚拟身份证号',
     name varchar(16) comment '名字',
     primary key (id) comment '主键索引',
     UNIQUE key (eno) comment 'eno唯一索引',
     UNIQUE key (eid) comment 'eid唯一索引'
 ) engine = InnoDB
   auto_increment = 1000
   default charset = utf8;
 
 alter table persons
     add unique index index_veid (veid) comment 'veid唯一索引';

通过show index from persons;命令我们看到已经成功创建了三个唯一索引。

普通索引

主键索引和唯一索引对字段的要求是要求字段为主键或unique字段,

而那些建立在普通字段上的索引叫做普通索引,既不要求字段为主键也不要求字段为unique。

前缀索引

前缀索引是指对字符类型字段的前几个字符或对二进制类型字段的前几个bytes建立的索引,而不是在整个字段上建索引。

例如,可以对persons表中的name(varchar(16))字段 中name的前5个字符建立索引。

create index index_name on persons (name(5)) comment '前缀索引';
 show index from persons;

前缀索引可以建立在类型为

  • char

  • varchar

  • binary

  • varbinary

的列上,可以大大减少索引占用的存储空间,也能提升索引的查询效率。

索引列的个数角度看索引

  • 建立在单个列上的索引为单列索引

  • 建立在多列上的称为联合索引(复合索引)

演示一下联合索引

create index index_id_name on workers(id,name) comment '组合索引';

这条语句在我们演示表workers中建立id,name这两个字段的联合索引。

借助show index命令查看索引的详细信息 操作后结果如下:

虽然详细信息当中列出了两条关于联合索引的条目,但并不表示联合索引是建立了多个索引,联合索引是一个索引结构,这两个条目表示的是组合索引中字段的具体信息,按建立索引时的书写顺序排序。

同样我们来看下联合索引的B+tree示意图

从图中看到组合索引的非叶子节点保存了两个字段的值作为B+tree的key值,当B+tree上插入数据时,先按字段id比较,在id相同的情况下按name字段比较。

Win11+VSCode+TeXLive:学术党必备的LaTeX环境配置避坑指南(2024最新版) 本文详细介绍了如何在Windows 11系统下,通过VSCode编辑器与TeXLive发行版配置高效的LaTeX学术写作环境。针对国内用户常见的镜像下载慢、插件配置复杂等问题,提供了优化方案和避坑指南,帮助科研人员和学生快速搭建流畅的学术写作工作流。 阅读详情

相关推荐

5.1 Tessent Atpg系列 第八章 Test Pattern Generation - Verify Test Pattern

为什么要做基于timing的仿真,意义在于可以比较ATPG工具和simulator工具的差异性。因为时序的差异导致不同的结果。首先你需要通过write_patern 这句cmd来写出pattern,默认是parallel 模式,除非你用-serial 指定写出serial, 因为serial 文件非常大,所以你可以使用-sample 开关写出部分pattern即可,工具会根据每一种pattern 类型都会至少保存一只。 另外,你也可以使用-start -end 开关来减少文件大小,但是这样的截取,是不可靠的

ciscomonkey的博客 7766

天天都在用数据库,你真的搞懂MySQL数据库索引是如何实现的吗?

最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub 作为一个Java开发工程师,你对数据库肯定再熟悉不过了。作为主流的数据存储系统,它在我们的业务开发中,有着举足轻重的地位。在工作中,为了加速数据库中数据的查找速度,我们常用的处理思路是,对表中数据创建索引。那你是否思考过,数据库索引是如何实现的呢?底层使用的是什么数据结构和算法呢? 一、解决问题的前提是定义清楚问题 如何定义清楚问题呢?除了对问题进行详细的调研,还有一个办法,那就是,通过对一些模糊的需求进行假.

Java____superman的博客 382

如何设计QR反激变换器

摘要:本文分析了基于GaN技术的PD适配器市场现状,重点探讨了准谐振反激变换器(QR Flyback)的工作原理及设计方法。文章首先介绍了反激变换器的三种工作模式(CCM、DCM、CRM/QR)及其特点,指出QR模式通过谷底开通技术能显著降低开关损耗。随后以65W适配器为例,详细阐述了变压器参数设计流程,包括匝比确定、原边电感计算和绕组匝数设计等关键步骤。文章强调QR反激变换器凭借高效率、小体积和低成本优势,已成为20W-65W PD适配器的主流拓扑方案,配合GaN技术进一步提升了功率密度和便携性。

m0_62868254的博客 1499

【搬运指针,内附链接】一文搞懂MySQL索引所有知识点(内容真的棒)

敖丙大佬的MySQL索引总结,内含MySQL索引为什么效率高的原理、不同引擎下索引的区别、聚簇索引、覆盖索引、联合索引等知识点,写的很好,这里写个搬运指针,详情访问大佬的博客。 一文搞懂MySQL索引所有知识点(建议收藏) 永远不要放弃梦想 ...

haohaoxuexiyai的博客 414

【人工智能】人工智能基础概念、流派、发展史

人工智能初衷就是让计算机能够像人类一样具有自我思考、自我学习、自我决策的能力。依据百度百科上对人工智能定义:人工智能是研究、开发用于模拟、扩展和延伸人的智能的理论、方法、技术及应用系统的一门新的技术学科。人工智能是研究使计算机来模拟人的某些思维过程和智能行为的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。

WEL测试 1889

uniapp [全端兼容] - 实现接入使用天地图及卫星视图切换功能,在国家天地图上自由切换地图显示类型(卫星视图/地形视图/卫星混合/地形混合/普通视图)天地图切换视图显示改成卫星风格,切换地图图层

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,天地图,视图,卫星,地图类型切换,uniAPP天地图,改成卫星视角,在线地图切换,来回切换卫星图,天地图如何实现来回切换卫星图,地形图,卫星视图,VUE3引入天地图卫星版,详细教程示例源码代码,天地图切换卫星用什么api,卫星视角API方法,vue3卫星天地图,能改地图的显示方式,vue3中使用天地图自定义样式切换地图图层,切换报错,加载出错,卫星图太卡,地图图层更换,vue3安装集成天地图详细示例源

🏆 前端领域优质创作者 1万+

mysql大于小于走索引吗_天天都在用数据库,你真的搞懂MySQL数据库索引是如何实现的吗?...

推荐阅读:在一次又一次的失败中,我总结了这份万字的《MySQL性能调优笔记》GitHub狂飙30K+star面试现场,专为程序员面试打造,现已开源可下载并发编程详解:十三个工具类,十大设计模式,从理论基础到案例实战作为一个Java开发工程师,你对数据库肯定再熟悉不过了。作为主流的数据存储系统,它在我们的业务开发中,有着举足轻重的地位。在工作中,为了加速数据库中数据的查找速度,我们常用的处理思路是,...

weixin_39649614的博客 4155

MicroCap声学仿真介绍(五)-倒相管扬声器系统仿真

实际倒相管的扬声器单体选择、后腔容积、倒相管的直径和长度都是需要精心挑选的,为了便于演示,随意指定了倒相管的长度和直径,现实中还是不能这么随便的。之前介绍了封闭式扬声器的仿真,今天在封闭式扬声器的基础上,再介绍一下倒相管扬声器系统的仿真。

山无忧的博客 1720

mysql or走索引吗_你真的完全搞懂了Mysql索引原理吗?只需5分钟,看完这篇彻底明白...

目录为什么要有索引索引原理磁盘IO与预读索引的数据结构b+树的查找过程b+树性质MySQL的索引分类索引的两大类型hash与btree添加索引,必须遵循原则慢查询优化的基本步骤欢迎关注笔者,优质文章都在这里等你。一、为什么要有索引索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化...

weixin_39654067的博客 428

使用R语言实现循环神经网络RNN进行文本生成

首先,让我们回顾一下循环神经网络(Recurrent Neural Networks,RNN)的基本概念。RNN是一种深度学习技术,特别适合处理序列数据,如时间序列和文本数据。RNN的关键特性是它的隐藏状态,这个状态可以捕捉到当前输入之前的信息。这使得RNN能够利用前面的信息来影响后续的输出,从而对序列数据进行有效的处理。

斌擎科技 726

解锁IPG Photonics SmartWeld系统,开启焊接新时代

SmartWeld 系统是 IPG Photonics 研发的一款先进的激光焊接解决方案,它隶属于自动化激光焊接系统类别 ,但却凭借一系列创新技术和独特设计,在众多同类产品中脱颖而出。该系统基于 IPG 在光纤激光技术领域的深厚积累,融合了先进的光束控制、智能监测和自动化控制等技术,旨在为工业制造提供高效、精准且稳定的焊接工艺。与传统激光焊接系统相比,SmartWeld 系统的独特之处首先体现在其光束控制技术上。它能够精确地调整激光束的能量分布、光斑大小和形状 ,以适应不同材料和焊接工艺的需求。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1432

mysql 查找相似数据_你真的完全搞懂了Mysql索引原理吗?只需5分钟,看完这篇彻底明白...

目录为什么要有索引索引原理磁盘IO与预读索引的数据结构b+树的查找过程b+树性质MySQL的索引分类索引的两大类型hash与btree添加索引,必须遵循原则慢查询优化的基本步骤欢迎关注笔者,优质文章都在这里等你。一、为什么要有索引索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化...

weixin_39580042的博客 169

《C/C++等级考试(1~8级)历届真题解析》专栏总目录

中国电子学会《全国青少年软件编程等级考试》C/C++编程(1~8级)历届真题解析。订阅后可阅读专栏内所有真题解析,真题持续更新中!

人生就是一个不断学习的过程 2万+

17为什么每次铺完铜都会锁定_你真的完全搞懂了Mysql索引原理吗?只需5分钟,看完这篇彻底明白...

目录为什么要有索引索引原理磁盘IO与预读索引的数据结构b+树的查找过程b+树性质MySQL的索引分类索引的两大类型hash与btree添加索引,必须遵循原则慢查询优化的基本步骤欢迎关注笔者,优质文章都在这里等你。一、为什么要有索引索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化...

weixin_39595537的博客 83

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

一文搞懂 MySQL 索引

一文搞懂 MySQL 索引 1、MySQL 索引 简介 2、MYSQL 索引 的分类 3、MySQL 索引 的数据结构 4、MySQL 索引 的实现 4.1、MyISAM 索引 4.2、InnoDB 索引 5、MySQL 索引 的使用

weixin_51123079的博客 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

一文搞懂 MySQL 中的索引

1. 什么是索引 MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。 举一个例子,平时看任何一本书,首先看到的都是目录,通过目录去查询书籍里面的内容会非常的迅速,如下: 书籍的目录是按顺序放置的,有第一章,第二章…,它本身就是一种顺序存放的数据结构,是一种顺序结构。 但是如果我们要去图书馆找一本书怎么办?最好的方式就是有如下的的指引: 从上面可见,整个索引结构是一棵倒挂着的树,其实它就是一种数据结构,这种数据结构比前面讲到的

个人站点:javatv.net 8906

一文搞懂MySQL索引(清晰明了)

索引是对数据库表中一列或多列的值进行排序的一种结构。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 MySQL中常用的索引结构(索引底层的数据结构)有:B-TREE ,B+TREE ,HASH 等。 MySQL 的索引有两种分类方式:逻辑分类和物理分类。 对于InnoDB和MyISAM而言,主键索引是根据主关键字来构建的B+树存储结构,辅助索引则是根据辅助键来构造的B+树存储结构,彼此的索引树都是相互独立的。

我本可以 17万+

一文搞懂MySQL索引所有知识点(建议收藏)

好家伙!老板看了直呼内行!

敖丙 17万+

一文带你你搞懂索引如何优化!!!

前言索引的相信大家都听说过,但是真正会用的又有几人?平时工作中写SQL真的会考虑到这条SQL如何能够用上索引,如何能够提升执行效率?此篇文章详细的讲述了索引优化的几个原则,只要在工作中能...

码猿技术专栏 4175

MySQL 索引篇详解,带你搞懂MySQL索引!!

本篇文章详细介绍了常见 MySQL 索引

祝你身体健康,美满幸福 2154

一文搞懂mysql索引

mysql索引索引是啥索引类型数据库数据存储MyISAMInnoDB聚集索引和非聚集索引聚集索引非聚集索引为何应该使用自增整型主键InnoDB非聚集索引回表查询索引覆盖联合索引最左匹配原则 索引是啥 索引是一种排好序的数据结构,mysql使用这种结构能够高效获取数据 索引类型 二叉树 在一些情况下回退化为链表。 hash 只能实现= 和in 查找,无法范围查找,可能有哈希冲突。查找复杂度低。 红黑树 树的高度在数据量大的情况下太高,效率较低。 B树 mysql使用B+树,非叶子节点不存储数据,只存储索引,

zhengkun51的博客 513

聚簇索引 vs 非聚簇索引:一次搞懂数据库索引的 “物理真相

聚簇索引是 “数据的物理排列方式”,适合当表的 “主钥匙”;非聚簇索引是 “附加的快捷方式”,按需创建即可。搞懂它们的存储差异,才能让索引真正成为查询的 “加速器”,而不是性能的 “拖油瓶”。

2301_79807099的博客 1673

一文搞懂MySQL索引

索引概述:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。优缺点优势劣势提高数据检索的效率,降低数据库的IO成本索引列也是要占用空间的通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。

weixin_63908159的博客 1238

五分钟搞懂MySQL索引下推

面试时候问到索引,常常会顺嘴问一句索引下推。给我五分钟,图文并茂,带你get索引下推。

三分恶的博客 5130

一文搞懂MySQL索引数据结构

前言 当我们在查询数据慢的情况下第一个想到的会是添加索引,索引在数据库的实际应用场景中十分常见,数据库的优化也离不开对索引的优化。而且索引相关的知识也是面试频率非常高的点之一,因此,本文将从基础理论出发,介绍MySQL按照逻辑角度的索引分类和实现。通过索引数据结构的实现原理阐述不同结构对建立索引带来的优劣势,希望通过这篇文章能给大家带来收获。 SQL执行慢的原因分析 磁盘空间不足、内存不足、I/O吞吐量小或者网络差等原因。 表没有创建索引或者索引已经失效。 分库分表也会带来SQL慢的原因 服务器调优及各.

养歌的博客 5900
上一篇: 个人笔记,深入理解 JVM,很全
下一篇: 为什么我一定要彻底搞懂AOP?
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值