问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL索引有啥好处,怎么合理的添加

发布网友 发布时间:2022-04-23 16:25

我来回答

2个回答

热心网友 时间:2022-04-07 15:56

建立一个好的索引,主要是建立在查询多的列,where条件中多的列,需要排序的列。多建立复合索引
总结下来 索引有三大好处:
1、索引大大减少了服务器要扫描的数据量。
2、索引可以降随机IO变为顺序IO。
3、索引可以帮助服务器避免排序和临时表。

热心网友 时间:2022-04-07 17:14

在满足语句需求的情况下,尽量少的访问资源是数据库设计的重要原则,这和执行的 SQL 有直接的关系,索引问题又是 SQL 问题中出现频率最高的,常见的索引问题包括:无索引(失效)、隐式转换。
1. SQL 执行流程看一个问题,在下面这个表 T 中,如果我要执行 select * from T where k between 3 and 5; 需要执行几次树的搜索操作,会扫描多少行?mysql> create table T (    -> ID int primary key,    -> k int NOT NULL DEFAULT 0,    -> s varchar(16) NOT NULL DEFAULT '',    -> index k(k))    -> engine=InnoDB;mysql> insert into T values(100,1, 'aa'),(200,2,'bb'),\      (300,3,'cc'),(500,5,'ee'),(600,6,'ff'),(700,7,'gg');
这分别是 ID 字段索引树、k 字段索引树。 

这条 SQL 语句的执行流程:

1. 在 k 索引树上找到 k=3,获得 ID=3002. 回表到 ID 索引树查找 ID=300 的记录,对应 R33. 在 k 索引树找到下一个值 k=5,ID=5004. 再回到 ID 索引树找到对应 ID=500 的 R4

5. 在 k 索引树去下一个值 k=6,不符合条件,循环结束

这个过程读取了 k 索引树的三条记录,回表了两次。因为查询结果所需要的数据只在主键索引上有,所以必须得回表。所以,我们该如何通过优化索引,来避免回表呢?
2. 常见索引优化2.1 覆盖索引覆盖索引,换言之就是索引要覆盖我们的查询请求,无需回表。

如果执行的语句是 select ID from T wherek between 3 and 5;,这样的话因为 ID 的值在 k 索引树上,就不需要回表了。

覆盖索引可以减少树的搜索次数,显著提升查询性能,是常用的性能优化手段。

但是,维护索引是有代价的,所以在建立冗余索引来支持覆盖索引时要权衡利弊。

2.2 最左前缀原则

B+ 树的数据项是复合的数据结构,比如 (name,sex,age) 的时候,B+ 树是按照从左到右的顺序来建立搜索树的,当 (张三,F,26) 这样的数据来检索的时候,B+ 树会优先比较 name 来确定下一步的检索方向,如果 name 相同再依次比较 sex 和 age,最后得到检索的数据。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2198香辣虾是什么意思 虾什么梗 肖战 刻纸制作需要哪些步骤 好玩的生存游戏手游(好玩的生存游戏手游推荐) 北京电脑职业培训学校都有哪些北京电脑培训班都有哪些 欧盟商标注册需要提供什么资料? 怎么注册欧盟商标?需要准备哪些材料? 5g手机有什么好处 5g手机大概多少钱 口水臭是什么原因呢? 口水臭是什么原因 口水臭怎么改善 mysql 连接符是什么? mysql中int(10)代表什么意思? mysql int 代表多长 mysql int(M) M是啥意思,最大是多少,多指教 MYSQL INT类型问题 mysql数据库内链查询和外链有什么区别 mysql identity 微软Exchange Activesync账户密码错误,怎么办? 邮票有什么作用? 《骆驼祥子》的经典情节的简介(全文的),作者,国家 骆驼祥子的人生启示是什么。。。 邮票的作用是什么? 《驼驼祥子》的读后感和对作者的了解 骆驼祥子读后感300 不要太好的一个小学生水平就行 冻花蟹的制作方法 邮票是什么,它什么? 骆驼祥子和傅雷家书和起来的读书笔记 潮式冻花蟹怎样整?? 《骆驼祥子》24个章节,每章的简写,主要内容!!,急,~~谢咯哈 邮票是什么东东? 2021crv液晶仪表盘样式可以调嘛 mysql中int,bigint,smallint 和 tinyint的区别详细介绍 21款标配的本田crv能升级全液晶仪表? MySQL-mysql bit字段和tinyint字段有什么区别 crv混动低配是液晶屏吗 windows xp 怎么连手机热点? mysql varchar索引和int索引性能哪个好 04款本田crv2.0仪表盘小液晶屏不亮怎么办? windowsXP系统台式机怎样连手机热点? mysql在int表格插入char类型 混动crv液晶盘显示EV是不是代表用电? MYSQL INNODB主键使用varchar和int的区别 本田crv2022年新款什么时候上市?, mysql 定义变量 东风本田crv的液晶无显示是什么原因 本田CRV仪表盘显示不正常该怎么办?08款CRV 仪表盘中的液晶屏乱码 Mysql的BigInt(20),Int(20)以及Bigint(32)有区别吗? CRV屏幕怎么退出到壁纸页面 crv和皓影哪个保值 台式xp电脑怎么连接手机热点