这次真的救了我,MySQL索引优化,解释的很清楚。 xunaa 2024-10-05 07:12:39 编辑说 本文主要讲如何使用explain,以及explain的各种参数概念,后面会讲优化。 一、Explain 用法 模拟Mysql优化器如何执行SQL查询语句,了解Mysql如何处理你的SQL语句。分析查询语句 本文主要讲如何使用explain,以及explain的各种参数概念,后面会讲优化。 一、Explain 用法 模拟Mysql优化器如何执行SQL查询语句,了解Mysql如何处理你的SQL语句。分析查询语句或表结构的性能瓶颈。 语法:解释+SQL语句; 例如:解释select * from user;会生成如下SQL分析结果。下面详细解释每个字段。 二、id 是一组数字,代表多个表之间的查询顺序,或者包含子句的查询语句中的顺序。 id总共分为三种情况,下面依次详细说明。 id相同,但是执行顺序是从上到下。如果是子查询,id号会增加。 id值越大,优先级越高,越早执行。相同id和不同id同时存在。三、select_type select_type 包含以下几种值 简单主子查询派生联合联合结果简单 简单select查询,查询不包含子查询或联合查询 基本的 如果SQL语句包含任何子查询,则子查询的最外层将被标记为主查询 子查询 如果select 或where 中包含子查询,则该子查询将被标记为subQquery。同样的三个和两个同时出现。 衍生的 from 中包含的子查询将被标记为派生查询,查询结果将放置在临时表中。 工会/工会结果 如果有两个select查询语句,并且它们通过union连接,那么第二个select将被标记为union,并且union的结果将被标记为union结果。它的id 为空 四、table 表示该行数据来自哪个表。 五、type 类型代表MySQL使用哪种索引类型。不同索引类型的查询效率也不同。类型一般有以下几种 systemconsteq_refrefrangeindexallsystem 表中只有一行记录。 System 是const 的一个特例。这种情况几乎不会发生,可以忽略不计。 常量 将主键索引或唯一索引放入where条件中进行查询。 MySQL可以将查询条件转换为常量,只匹配一行数据,通过一次索引就可以找到数据。 等式引用 在多表查询中,例如T1和T2,T1中的一行记录只能找到T2中唯一的一行。说白了,T1和T2之间关联查询的条件是主键索引或者唯一索引,从而保证T1中的每一行记录只对应T2中的一行记录 举一个不恰当的例子,EXPLAIN SELECT * from t1, t2 where t1.id=t2.id 参考 它不是主键索引,也不是唯一索引,而是普通索引,可能返回多个符合条件的行。 范围 体现在索引的区间范围检索上,一般出现在where条件中的between、and、in等范围搜索中。 指数 遍历所有索引树来查找满足条件的行。索引文件仍然比数据文件小得多,因此它仍然比没有索引的全表扫描快得多。 全部 不使用索引,只是遍历所有表数据来查找符合条件的数据。 六、possible_keys 如果本次查询涉及的字段上有索引,则会列出来,表示可能使用的索引,但并不是真正会使用的索引。 七、key 本次查询实际使用的索引 八、key_len 表示索引中使用的字节数。通过该属性,可以知道查询中使用的索引长度。注意:此长度是最大可能长度,而不是实际使用的长度。在不损失准确性的情况下,长度越长短查询效率越高 九、ref 显示关联字段。如果使用常量等价查询,则显示const,如果是连接查询,则显示关联字段。 tb_emp表是非唯一索引扫描,实际使用的索引列是idx_name。由于tb_emp.name='rose' 是常量,因此ref=const。 tb_dept 是唯一索引扫描。从sql语句可以看出,实际上使用的是PRIMARY主键索引。 ref=db01.tb_emp.deptid 表示与db01数据库中tb_emp表的deptid字段关联。十、rows 根据表信息统计和索引使用情况,我们可以大致估算出需要读取的行数才能找到所需的记录。行越小越好。 十一、extra 不适合在其他列中显示,但在优化过程中非常重要的信息 使用fileSort(重点优化) 俗称‘文件排序’,在数据量大的时候几乎是“九死一生”。在order by或group by排序过程中,order by的字段不是索引字段,或者select查询字段存在且不是索引字段,或者select查询字段都是索引字段,但是顺序order by字段和select索引字段不一致,会导致fileSort 使用临时(关键优化) 临时表用于保存中间结果,常见于order by和group by。 USING 索引(强调) 意味着对应的select操作使用了覆盖索引(Coveing Index)来避免访问表的数据行,效率非常高!如果同时出现using where,则表明该索引用于进行索引键值的搜索;如果using where没有同时出现,则使用表面索引来读取数据,而不是执行搜索操作。 使用地点 表示使用where过滤 使用连接缓冲区 使用连接缓存 不可能在哪里 where 子句的计算结果始终为false,并且不能用于获取任何元组 选择优化掉的表 在没有GROUPBY子句的情况下,基于索引优化MIN/MAX操作或者为MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段才进行计算。优化在查询执行计划生成阶段完成。 清楚的 用户评论 短发 终于懂了为什么加索引这么重要! 有14位网友表示赞同! *巴黎铁塔 之前一直以为解释器就是调数据库用的,这篇文章让我彻底明白了它的作用。 有19位网友表示赞同! 怀念·最初 太实用了!我最近正好遇到MySQL慢查询的问题,这个方法简直是我的救命稻草。 有18位网友表示赞同! 我就是这样一个人 explain讲得真清楚,一个新手都能看懂,厉害了 有7位网友表示赞同! 淡淡の清香 视频的讲解方式很清晰易懂,我已经开始用起来啦!我的数据访问速度明显提升了 有12位网友表示赞同! 不忘初心 MySQL索引优化一直是我比较头疼的事情,这个帖子完美解决了我的问题! 有16位网友表示赞同! 惦着脚尖摘太阳 点赞!这篇文章太棒了,我终于明白了索引的作用。 有11位网友表示赞同! 伪心 真救了我一把,之前慢查询的问题搞得我要崩溃了 有18位网友表示赞同! 发型不乱一切好办 以前没怎么用过explain,现在看了这篇文章之后,感觉可以优化数据库查询速度啦~ 有16位网友表示赞同! 落花忆梦 MySQL索引优化 really need to learn this!感谢分享这个很棒的文章 有15位网友表示赞同! 花开丶若相惜 以前不知道索引效率这么重要,这下明白啦!学习了学习了! 有15位网友表示赞同! 烟花巷陌 explain 的使用简直太牛 了! 可以看到代码执行的详细情况,真是太好了! 有13位网友表示赞同! 怅惘 强烈推荐给所有跟MySQL打架的人! 有19位网友表示赞同! 顶个蘑菇闯天下i 分享这篇文章真是太好了,我的数据库查询速度终于有了显著提高! 有15位网友表示赞同! 蝶恋花╮ 作者思路清晰讲解到位,索引优化问题终于不再成为难题。 有11位网友表示赞同! 笑傲苍穹 ?explain命令好有用啊!原来可以这样看查询效率了! 有7位网友表示赞同! 旧爱剩女 之前一直以为MySQL优化很简单,看了这篇文章之后才发现很多细节啊! 有9位网友表示赞同! 代价是折磨╳ 索引优化太重要了,必须好好学习一下! 有13位网友表示赞同! 快速报名 学生姓名 意向学校 意向专业 联系方式 请输入正确的电话号码 或许你还想看: 这次真的救了我,MySQL索引优化,解释的很清楚。 mysql 解释用法 面试官:如何使用explain来分析SQL执行性能? 点赞 免责声明 本站所有收录的学校、专业及发布的图片、内容,均收集整理自互联网,仅用于信息展示,不作为择校或选择专业的建议,若有侵权请联系删除! 大家都在看 上一篇 mysql 解释用法 下一篇 返回列表 大家都在看 这次真的救了我,MySQL索引优化,解释的很清楚。 本文主要讲如何使用explain,以及explain的各种参数概念,后面会讲优化。 一、Explain 用法 模拟Mysql优化器如何执行SQL查询语句,了解Mysql如何处理你的SQL语句。分析查询语句 艺考资讯 2024-10-05 mysql 解释用法 使用时只需在select语句前添加explain即可,如: 解释select * from statuses_status where id=11; 解释栏解释 table:显示这行数据与哪个表相关 type:这是重要的列,显示连接使 艺考资讯 2024-10-05 面试官:如何使用explain来分析SQL执行性能? 介绍 在工作中,我们捕获性能问题最常用的方法就是打开慢查询,定位执行效率差的SQL。然后当我们找到一条SQL时,我们还没有完成。我们还需要知道SQL的执行计划。比如全表扫描或者 艺考资讯 2024-10-05 “对不起”不是“对不起”,小心别人看你! “熟悉的单词有部分含义”是英语中的常见情况。似乎每一个字都认识,但连在一起却又不知道是什么意思。 这里的“Excuse me for a moment”并不意味着“Excuse me for 艺考资讯 2024-10-05 英语报告厅| “对不起”就是“对不起”吗? 英语报告厅 “对不起”只是“对不起”吗? 英语口语中经常使用“Excuse me”这个短语。在我们看来,这句话也应该意味着“对不起”。然而,事实并非如此! “Excuse me”常用于以 艺考资讯 2024-10-05 “Excuse me”的意思是“对不起”,但是“Excuse you”呢? 众所周知,Excuse me的意思是“对不起”,常用于某些场合表达歉意或打扰对方。 那么,既然你学了这么多年《Excuse me》,你见过《Excuse you》吗?你知道它的含义和具体用途吗?今天 艺考资讯 2024-10-05 英语口语中“excuse me”的4种常见情况。学习日常生活英语。文章最后有惊喜。 引起别人的注意 当我们想要引起别人的注意并询问某事时,我们可以使用Excuse me,意思是“对不起打扰你了,请原谅。”此时Excuse me前重后轻,用降调来吸引别人的注意。例如: 1) 艺考资讯 2024-10-05 对于一分钟情景口语和听力,请使用“Excuse me!”请原谅我! 打扰一下! 1.对不起!请原谅我! 2.对不起,我迟到了。对不起,我迟到了。 *请原谅某人……希望因某事而被原谅。 3.这不是借口!这不是借口! 4.别再找借口了!别再找借口了! *找借口寻找 艺考资讯 2024-10-05 “对不起?”是什么意思?英文的意思是?别把它理解为“打扰我”! 1. 相识 熟人['kwent()ns] 熟人, 偶然认识, 熟人 解析: 熟人鞠躬点头熟人点头熟人示例: 她是我在维也纳的家人的一个偶然认识的人。 她是我们在维也纳的家人的密友。 我与他有一 艺考资讯 2024-10-05 20套单词解析只是尖子生的一张门票。建议收藏 好的形容词, 副词好, 但这是一个形容词,指的是身体状况 他又好了。 2. 艰难,艰难 努力工作, 几乎不 努力工作 我简直不敢相信。 3. 迟到,最近 迟到了,迟到了, 最近最近,最近 我最近没 艺考资讯 2024-10-05