首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

性能优化-通过explain查询分析SQL的执行计划

7、通过explain查询分析SQL的执行计划 1、使用explain查询SQL的执行计划 SQL的执行计划侧面反映出了SQL的执行效率,具体执行方式如下所示:在执行的SQL前面加上explain关键词即可...,如果查询使用了别名,那么这里显示的是别名,如果不涉及对数据表的操作,那么这显示为null,如果显示为尖括号括起来的就表示这个是临时表,后边的N就是执行计划中的id,表示结果来自于这个查询产生。...8)、ref 如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为...临时表可以是内存临时表和磁盘临时表,执行计划中看不出来,需要查看status变量,used_tmp_table,used_tmp_disk_table才能看出来。...,还有很多查询数据字典库,执行计划过程中就发现不可能存在结果的一些提示信息 11)、filtered 使用explain extended时会出现这个列,5.7之后的版本默认就有这个字段,不需要使用explain

1.4K10

一个执行计划异常变更的案例 - 外传之查询执行计划的几种方法

, child_cursor_number, 'advanced')); 其中第一个参数可以输入SQL的sql_id或hash value,方法就是如果执行的SQL仍在库缓存中,则可以使用V$SQL查询...若该SQL的执行计划被采集到AWR库中,则可以用(4)来查询历史执行计划。...Snapshot Generation (文档 ID 554831.1)》中的方法,修改AWR采集topnsql参数,换句话说,不会所有的SQL都会被捕获至AWR中,因此方法(4)有可能存在查询不出结果的情况...像10046这种事件,都不是Oracle官方文档中可以查询到的,这些事件一般用于调试目的,因此往往可以使用他们找到问题更详细的信息。...根据TEST1主键索引返回的ROWID,查询对应数据项。产生结果集1。 (d) SORT JOIN 按照TEST2的t2id列排序。产生结果集2。

58240
您找到你想要的搜索结果了吗?
是的
没有找到

SQL执行计划 - 查询转换hint的介绍和使用技巧

创建基础数据和索引,如下: 查看执行计划,如图6-1所示: 图6-1 默认index提示执行计划 可以看到,优化器默认选择索引idx_all进行查询。...使用is not null查询转换: 创建基础数据和索引: 查询转换前的执行计划,如图6-7所示: 图6-7 使用查询转换前的执行计划 可以看到,查询转换前使用全表扫描。...使用is not null进行查询转换,执行计划如图6-8所示: 图6-8 使用查询转化后的执行计划 可以看到,当使用is not null进行查询转换后,优化器使用索引快速全表扫描代替全表扫描。...提示的执行计划(and) 查询使用and作为谓词连接,同时使用index_combine提示时的执行计划,如图6-14所示 图6-14 使用index_join提示的执行计划(and) 可以看到,查询使用...查询使用or作为谓词连接,同时使用index_combine提示时的执行计划,如图6-16所示: 图6-16 使用index_combine提示的执行计划(or) 可以看到,查询使用or作为谓词连接时

1.5K110

TiDB 查询优化及调优系列(四)查询执行计划的调整及优化原理

本章节会介绍在优化器产生的查询执行计划和预期不符时,如何通过 TiDB 提供的调优手段来调整及稳定查询计划。...本篇文章为查询执行计划的调整及优化原理解析,主要会介绍如何通过使用 HINT 来调整查询执行计划,以及如何利用 TiDB SPM 来绑定查询语句的查询执行计划;最后将介绍一些规划中的功能。...使用 HINT 调整查询执行计划 当优化器选择了非预期或不优的执行计划,用户需要使用 Hint 进行执行计划的调整。...使用 SPM 绑定查询执行计划 执行计划是影响 SQL 执行性能的一个非常关键的因素,SQL 执行计划的稳定性也对整个集群的效率有着非常大的影响。...这些功能包括但不限于: Plan Change Capture: 用于验证在升级中是否会引起查询执行计划回归/变更; Plan Replayer: 用于一键收集用户问题查询的相关信息,并一键导入 TiDB

56330

「Mysql优化大师三」查询执行计划explain详解,含案例

1、执行计划中包含的信息 Column Meaning id The SELECT identifier select_type The SELECT type table The table for...:简单子查询、所谓的派生表、UNION查询,下面是一个简单的子查询:explain select (select 1 from actor limit 1) from film ?...这个查询执行时有一个匿名临时表。mysql内部通过别名der在外层查询中引用这个临时表,在更复杂的查询中可以看到ref列。 最后,下面是一个UNION查询。...select_type 主要用来分辨查询的类型,是普通查询还是联合查询还是子查询。simple意味着查询不包括子查询和UNION,如果查询有任何复杂的字部分,则最外层部分标记PRIMARY 。...,则该索引将被列出,但不一定被查询实际使用 key 实际使用的索引,如果为null,则没有使用索引,查询中若使用了覆盖索引,则该索引和查询的select字段重叠。

1.1K10

《T-SQL查询》读书笔记Part 2.执行计划

一、关于执行计划 执行计划是优化器生成的用于确定如何处理一个给定查询的“工作计划”。一个计划包含一组运算符,通常按照特定的顺序来应用这些运算符。...一种是估计执行计划(Ctrl+L键),另一种是实际执行计划(Ctrl+M键)。两种计划通常都是一样的,只是执行时间点不同。估计查询计划是在查询执行之前生成,而实际执行计划则是在查询输出的同时得到的。...(2)待分析的查询语句 -- 图形化执行计划查询示例 SELECT custid, empid, shipperid, COUNT(*) AS numorders FROM dbo.Orders WHERE...Step3.实际的执行计划(先选中“包括实际的执行计划”,再执行该查询,即可同时得到查询的输出和实际的计划) ? ?   这时再把光标移到某个运算符,看到的会变为“实际行数”。 ?...2.3 比较多个查询的开销   图形化执行计划的另一个有用的功能就是可以方便地比较多个查询的开销。

30730

深入SQL执行计划之CBO查询转换(6):子查询关联集展开机能(unnest correlation set subquery)

话不多说,还是马上上例子,在没用到子查询关联集展开机能之前,下面的 Case 会是什么样子。...没用到子查询关联集展开机能之前,执行计划和【子查询展开机能(Subquery Unnesting)】一节中讲到的没用子查询展开是的效果一样。...即,用子查询的 filter 的结果来对主查询进行 filter,只不过这次,子查询中 t1,t2 表作了 UNION ALL。...这种情况下,如何展开子查询来做结合处理呢,这就用到了子查询关联集展开机能。...KEY"="VW_COL_1") CBO 变换后的执行计划可以看出,t1,t2 表的 UNION ALL 的结果做成 View 之后和 drv 做 SEMI 结合。

22310

Mysql执行计划

avgscoreFROMscWHEREsc.score = 2) tmp ON tmp.Sid = student.SId用执行计划分析...sqlAEXPLAIN sqlA分析执行计划的返回结果idid 是 select 的执行顺序,id 越大优先级越高,越先被执行,id 相同时下面的先执行.select_typeselect_type说明...SIMPLE简单查询,不包含union和子查询PRIMARY最外层查询,也就是select的主表SUBQUERY子查询中的第一个selectDERIVED导出表的select(from子句的子查询)UNION...SYSTEM系统,表仅有一行(=系统表)possible_keys预计可能使用的索引,在不和其他表进行关联的时候,查询表时可能使用的索引key实际查询的过程中使用的索引,显示 MySQL 在查询中实际使用的索引...Manual :: 8.8.1 Optimizing Queries with EXPLAINMysql经典练习题50题_original_recipe的博客-CSDN博客_mysql练习题MySQL 执行计划详解

1.3K10

linux查询日志命令总结

【命令】 Linux查看命令有多种:tail,head,cat,tac,more (一) tail 命令 tail [ -f ] [ -c Number | -n Number | -m Number...应用: 命令 含义 tail -f test.log 查看实时日志 tail -100f test.log 查看最后100行日志记录 tail -n 10 test.log 查询日志尾部最后10...,tail是查看后多少行日志 命令 含义 head -n 10 test.log 查询日志文件中的前10行日志 head -n -10 test.log 查询日志文件除了最后10行的其他所有日志 (...-h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及 行号。 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行。...man ag:使用方法请查看帮助: 【总结】 熟悉常用的Linux命令也是我们必须要掌握的一项技能,这样在查找问题过程中也能更加高效速度。

15.3K30
领券