Oracle执行计划——查看执行计划的方法

解读Oracle执行计划(一) 解读Oracle执行计划(一) 以SYS用户身份连接Oracle 12c 数据库,然后,执行下面的语句清空buffer_cache和shared_pool中的数据(生产环境请谨慎使用该语句) SQL> alter system flush buffer_cache; 系统已更改。 SQL> alter system flush shared_pool; 系统已更改。 SQL... 阅读详情

文章转自:https://blog.youkuaiyun.com/sinat_28472983/article/details/82382239

 

(1)什么是执行计划
SQL是一种傻瓜式语言,每一个条件就是一个需求,访问的顺序不同就形成了不同的执行计划。Oracle必须做出选择,一次只能有一种访问路径。执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述。


(2)执行计划的选择

通常一条SQL有多个执行计划,那我们如何选择?那种执行开销更低,就意味着性能更好,速度更快,我们就选哪一种,这个过程叫做Oracle的解析过程,然后Oracle会把更好的执行计划放到SGA的Shared Pool里,后续再执行同样的SQL只需在Shared Pool里获取就行了,不需要再去分析。


(3)执行计划选定依据

根据统计信息来选择执行计划。


(4)统计信息
什么是统计信息: 记录数、块数等,具体查看dba_tables / dba_indexes


(5)动态采样

Oracle正常情况下会在每天的某段时间收集统计信息,对于新建的表,Oracl如何收集统计信息?采用动态采样。
set autotrace on
set linesize 1000
--执行SQL语句
--会出现dynamic sampling used for this statement(level=2)关键


 

(一)六种执行计划

Oracle提供了6种执行计划获取方法,各种方法侧重点不同:

选择时一般遵循以下规则:
1.如果sql执行很长时间才出结果或返回不了结果,用方法1:explain plan for
2.跟踪某条sql最简单的方法是方法1:explain plan for,其次是方法2:set autotrace on
3.如果相关察某个sql多个执行计划的情况,只能用方法4:dbms_xplan.display_cursor或方法6:awrsqrpt.sql
4.如果sql中含有函数,函数中有含有sql,即存在多层调用,想准确分析只能用方法5:10046追踪
5.想法看到真实的执行计划,不能用方法1:explain plan for和方法2:set autotrace on
6.想要获取表被访问的次数,只能用方法3:statistics_level = all

获取方法优点缺点

[explain plan for] plsql按F5

 

explain plan for select * from dual;

select * from table(dbms_xplan.display());

无需真正执行,快捷方便1.没有输出相关统计信息,例如产生了多少逻辑读,多少次物理读,多少次递归调用的情况;
2.无法判断处理了多少行;
3.无法判断表执行了多少次

[set autotrace on]-sql*plus

 

set autotrace on

select * from dual;

1.可以输出运行时的相关统计信息(产生多少逻辑读、多少次递归调用、多少次物理读等);

2.虽然要等语句执行完才能输出执行计划,但是可以有traceonly开关来控制返回结果不打屏输出;

1.必须要等SQL语句执行完,才出结果;

2.无法看到表被访问了多少次;

[statistics_level=all]

 

alter session set statistics_level=all;

select * from dual;

select * from table(dbms_xplan.display_cursor(‘sql_id/hash_value’,null,'allstats last'));

1.可以清晰的从starts得出表被访问多少次;

2.可以从E-Rows和A-Rows得到预测的行数和真实的行数,从而可以准确判断Oracle评估是否准确;

3.虽然没有准确的输出运行时的相关统计信息,但是执行计划中的Buffers就是真实的逻辑读的数值;

1.必须要等执行完后才能输出结果;

2.无法控制结果打屏输出,不像autotrace可以设置traceonly保证不输出结果;

3.看不出递归调用,看不出物理读的数值

[dbms_xplan.display_cursor]

 

select * from table( dbms_xplan.display_cursor('&sql_id') );

1.知道sql_id即可得到执行计划,与explain plan for一样无需执行;

2.可得到真实的执行计划

1.没有输出运行的统计相关信息;

2.无法判断处理了多少行;

3.无法判断表被访问了多少次;

[事件10046 trace]

 

步骤1:alter session set events '10046 trace name context forever,level 12'; --开启追踪
步骤2:执行sql语句;
步骤3:alter session set events '10046 trace name context off'; --关闭追踪
步骤4:找到跟踪后产生的文件(开启10046前先用‘ls -lrt’看一下文件,执行结束后再看哪个是多出来的文件即可)
步骤5:tkprof trc文件 目标文件 sys=no sort=prsela,exeela,fchela --格式化命令

1.可以看出sql语句对应的等待事件;

2.如果函数中有sql调用,函数中有包含sql,将会被列出,无处遁形;

3.可以方便的看处理的行数,产生的逻辑物理读;

4.可以方便的看解析时间和执行时间;

5.可以跟踪整个程序包

1.步骤繁琐;

2.无法判断表被访问了多少次;

3.执行计划中的谓词部分不能清晰的展现出来

 

 

 


附录:


(0)Oracle如何收集统计信息

① Oracle会选择在一个特定的时间段收集表和索引的统计信息(默认周一至周五:22:00,周六周日:06:00),用户可自行调整,主要为了避开高峰期;
② 表与索引的分析有阈值限制,超过阈值才会自动进行分析。如果数据变化量不大,Oracle是不会去分析的;
③ 收集方式灵活。可针对分区表的某个分区进行,可采用并行机制来收集表和索引的信息;


如何收集统计信息
--收集表统计信息

 
  1. exec dbms_stats.gather_table_stats(ownname => 'AAA', tabname => 'TEST02',estimate_percent =>

  2. 10,method_opt => 'for all indexed columns');

--收集索引统计信息

 
  1. exec dbms_stats.gather_index_stats(ownname => 'AAA',indname => 'ID_IDX',estimate_percent =>

  2. 10,degree => '4');

--收集表与索引的统计信息

 
  1. exec dbms_stats.gather_table_stats(ownname => 'AAA',tabname => 'TEST02',estimate_percent =>

  2. 10,method_opt => 'for all indexed columns',cascade => true);


(1)explain plan for

 
  1. SQL> show user

  2. USER 为 "HR"

  3. SQL> set linesize 1000

  4. SQL> set pagesize 2000

  5. SQL> explain plan for

  6. 2 select *

  7. 3 from employees,jobs

  8. 4 where employees.job_id=jobs.job_id

  9. 5 and employees.department_id=50;

  10. 已解释。

  11.  
  12. SQL> select * from table(dbms_xplan.display());

  13.  
  14. PLAN_TABLE_OUTPUT

  15. ------------------------------------------------------------------------------------------------------------------------

  16. ----------------------------------------------------

  17. Plan hash value: 303035560

  18. ------------------------------------------------------------------------------------------

  19. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

  20. ------------------------------------------------------------------------------------------

  21. | 0 | SELECT STATEMENT | | 45 | 4590 | 6 (17)| 00:00:01 |

  22. | 1 | MERGE JOIN | | 45 | 4590 | 6 (17)| 00:00:01 |

  23. | 2 | TABLE ACCESS BY INDEX ROWID| JOBS | 19 | 627 | 2 (0)| 00:00:01 |

  24. | 3 | INDEX FULL SCAN | JOB_ID_PK | 19 | | 1 (0)| 00:00:01 |

  25. |* 4 | SORT JOIN | | 45 | 3105 | 4 (25)| 00:00:01 |

  26. |* 5 | TABLE ACCESS FULL | EMPLOYEES | 45 | 3105 | 3 (0)| 00:00:01 |

  27. ------------------------------------------------------------------------------------------

  28. Predicate Information (identified by operation id):

  29. ---------------------------------------------------

  30. 4 - access("EMPLOYEES"."JOB_ID"="JOBS"."JOB_ID")

  31. filter("EMPLOYEES"."JOB_ID"="JOBS"."JOB_ID")

  32. 5 - filter("EMPLOYEES"."DEPARTMENT_ID"=50)

  33. 已选择19行。

优点:无需真正执行,快捷方便;
缺点:1.没有输出相关统计信息,例如产生了多少逻辑读,多少次物理读,多少次递归调用的情况;
2.无法判断处理了多少行;
3.无法判断表执行了多少次
 


(2)set autotrace on

用法:
命令作用
SET AUTOT[RACE] OFF 停止AutoTrace
SET AUTOT[RACE] ON 开启AutoTrace,显示AUTOTRACE信息和SQL执行结果
SET AUTOT[RACE] TRACEONLY 开启AutoTrace,仅显示AUTOTRACE信息
SET AUTOT[RACE] ON EXPLAIN 开启AutoTrace,仅显示AUTOTRACE的EXPLAIN信息
SET AUTOT[RACE] ON STATISTICS 开启AutoTrace,仅显示AUTOTRACE的STATISTICS信息

 
  1. SQL> set autotrace on

  2. SQL> select * from employees,jobs where employees.job_id=jobs.job_id and employees.department_id=50;

  3. --输出结果(略)

  4. -- ...

  5. 已选择45行。

  6.  
  7. 执行计划

  8. ----------------------------------------------------------

  9. Plan hash value: 303035560

  10. ------------------------------------------------------------------------------------------

  11. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |

  12. ------------------------------------------------------------------------------------------

  13. | 0 | SELECT STATEMENT | | 45 | 4590 | 6 (17)| 00:00:01 |

  14. | 1 | MERGE JOIN | | 45 | 4590 | 6 (17)| 00:00:01 |

  15. | 2 | TABLE ACCESS BY INDEX ROWID| JOBS | 19 | 627 | 2 (0)| 00:00:01 |

  16. | 3 | INDEX FULL SCAN | JOB_ID_PK | 19 | | 1 (0)| 00:00:01 |

  17. |* 4 | SORT JOIN | | 45 | 3105 | 4 (25)| 00:00:01 |

  18. |* 5 | TABLE ACCESS FULL | EMPLOYEES | 45 | 3105 | 3 (0)| 00:00:01 |

  19. ------------------------------------------------------------------------------------------

  20. Predicate Information (identified by operation id):

  21. ---------------------------------------------------

  22. 4 - access("EMPLOYEES"."JOB_ID"="JOBS"."JOB_ID")

  23. filter("EMPLOYEES"."JOB_ID"="JOBS"."JOB_ID")

  24. 5 - filter("EMPLOYEES"."DEPARTMENT_ID"=50)

  25. 统计信息

  26. ----------------------------------------------------------

  27. 0 recursive calls

  28. 0 db block gets

  29. 13 consistent gets

  30. 0 physical reads

  31. 0 redo size

  32. 5040 bytes sent via SQL*Net to client

  33. 433 bytes received via SQL*Net from client

  34. 4 SQL*Net roundtrips to/from client

  35. 1 sorts (memory)

  36. 0 sorts (disk)

  37. 45 rows processed

优点:1.可以输出运行时的相关统计信息(产生多少逻辑读、多少次递归调用、多少次物理读等);
            2.虽然要等语句执行完才能输出执行计划,但是可以有traceonly开关来控制返回结果不打屏输出;
缺点:1.必须要等SQL语句执行完,才出结果;
            2.无法看到表被访问了多少次;


(3)statistics_level=all

步骤一:ALTER SESSION SET STATISTICS_LEVEL=ALL;
步骤二:执行待分析的SQL
步骤三:select * from table(dbms_xplan.display_cursor(‘sql_id/hash_value’,null,'allstats last'));

 
  1. SQL> alter session set statistics_level=all;

  2. SQL> select * from employees,jobs where employees.job_id=jobs.job_id and employees.department_id=50;

  3. --输出结果

  4. --...

  5. 已选择45行。

  6.  
  7. SQL> set linesize 1000

  8. SQL> select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));

  9.  
  10. PLAN_TABLE_OUTPUT

  11. ------------------------------------------------------------------------------------------------------------------------

  12. -----------

  13. SQL_ID d8jzhcdwmd9ut, child number 0

  14. -------------------------------------

  15. select * from employees,jobs where employees.job_id=jobs.job_id and

  16. employees.department_id=50

  17. Plan hash value: 303035560

  18. ------------------------------------------------------------------------------------------------------------------------

  19. ----------------

  20. | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem |

  21. 1Mem | Used-Mem |

  22. ------------------------------------------------------------------------------------------------------------------------

  23. ----------------

  24. | 0 | SELECT STATEMENT | | 1 | | 45 |00:00:00.01 | 13 | 8 | |

  25. | |

  26. PLAN_TABLE_OUTPUT

  27. ------------------------------------------------------------------------------------------------------------------------

  28. -------------

  29. | 1 | MERGE JOIN | | 1 | 45 | 45 |00:00:00.01 | 13 | 8 | |

  30. | |

  31. | 2 | TABLE ACCESS BY INDEX ROWID| JOBS | 1 | 19 | 19 |00:00:00.01 | 6 | 2 | |

  32. | |

  33. | 3 | INDEX FULL SCAN | JOB_ID_PK | 1 | 19 | 19 |00:00:00.01 | 3 | 1 | |

  34. | |

  35. |* 4 | SORT JOIN | | 19 | 45 | 45 |00:00:00.01 | 7 | 6 | 6144 |

  36. 6144 | 6144 (0)|

  37. |* 5 | TABLE ACCESS FULL | EMPLOYEES | 1 | 45 | 45 |00:00:00.01 | 7 | 6 | |

  38. | |

  39. ------------------------------------------------------------------------------------------------------------------------

  40. ----------------

  41. Predicate Information (identified by operation id):

  42. ---------------------------------------------------

  43. 4 - access("EMPLOYEES"."JOB_ID"="JOBS"."JOB_ID")

  44. PLAN_TABLE_OUTPUT

  45. ------------------------------------------------------------------------------------------------------------------------

  46. -----

  47. filter("EMPLOYEES"."JOB_ID"="JOBS"."JOB_ID")

  48. 5 - filter("EMPLOYEES"."DEPARTMENT_ID"=50)

  49. 已选择25行。

关键字解读:
1.starts:SQL执行的次数;
2.E-Rows:执行计划预计返回的行数;
3.R-Rows:执行计划实际返回的行数;
4.A-Time:每一步执行的时间(HH:MM:SS.FF),根据这一行可知SQL耗时在哪些地方;
5.Buffers:每一步实际执行的逻辑读或一致性读;
6.Reads:物理读;

优点:1.可以清晰的从starts得出表被访问多少次;
            2.可以从E-Rows和A-Rows得到预测的行数和真实的行数,从而可以准确判断Oracle评估是否准确;
            3.虽然没有准确的输出运行时的相关统计信息,但是执行计划中的Buffers就是真实的逻辑读的数值;
缺点:1.必须要等执行完后才能输出结果;
            2.无法控制结果打屏输出,不像autotrace可以设置traceonly保证不输出结果;
            3.看不出递归调用,看不出物理读的数值


(4)dbms_xplan.display_cursor获取


步骤1:select * from table( dbms_xplan.display_cursor('&sql_id') ); --该方法是从共享池得到
注释:
1.还有1种方法,select * from table( dbms_xplan.display_awr('&sql_id') ); --该方法是从awr性能视图里面获取
2.如果有多个执行计划,可用以下方法查出:

 
  1. select * from table(dbms_xplan.display_cursor('&sql_id',0));

  2. select * from table(dbms_xplan.display_cursor('&sql_id',1));

  3. */

  4. SQL> select * from table(dbms_xplan.display_cursor('5hkd01f03y43d'));

  5. PLAN_TABLE_OUTPUT

  6. --------------------------------------------------------------------------------

  7. SQL_ID 5hkd01f03y43d, child number 0

  8. -------------------------------------

  9. select * from test where table_name = 'LOG$'

  10. Plan hash value: 2408911181

  11. --------------------------------------------------------------------------------

  12. | Id | Operation | Name | Rows | Bytes | Cost (%CPU)|

  13. --------------------------------------------------------------------------------

  14. | 0 | SELECT STATEMENT | | | | 2 (100)|

  15. | 1 | TABLE ACCESS BY INDEX ROWID| TEST | 1 | 241 | 2 (0)|

  16. |* 2 | INDEX RANGE SCAN | IDX_TEST_1 | 1 | | 1 (0)|

  17. --------------------------------------------------------------------------------

  18. Predicate Information (identified by operation id):

  19. ---------------------------------------------------

  20. 2 - access("TABLE_NAME"='LOG$')

  21. 19 rows selected

注释:如何查看1个sql语句的sql_id,可直接查看v$sql

优点:1.知道sql_id即可得到执行计划,与explain plan for一样无需执行;
            2.可得到真实的执行计划
缺点:1.没有输出运行的统计相关信息;
            2.无法判断处理了多少行;
            3.无法判断表被访问了多少次;
 


(5)事件10046 trace跟踪


步骤1:alter session set events '10046 trace name context forever,level 12'; --开启追踪
步骤2:执行sql语句;
步骤3:alter session set events '10046 trace name context off'; --关闭追踪
步骤4:找到跟踪后产生的文件(开启10046前先用‘ls -lrt’看一下文件,执行结束后再看哪个是多出来的文件即可)
步骤5:tkprof trc文件 目标文件 sys=no sort=prsela,exeela,fchela --格式化命令

详细demo可见《附录1:10046追踪demo》

优点:1.可以看出sql语句对应的等待事件;
            2.如果函数中有sql调用,函数中有包含sql,将会被列出,无处遁形;
            3.可以方便的看处理的行数,产生的逻辑物理读;
            4.可以方便的看解析时间和执行时间;
            5.可以跟踪整个程序包
缺点:1.步骤繁琐;
            2.无法判断表被访问了多少次;
            3.执行计划中的谓词部分不能清晰的展现出来
 


(6)awrsqrpt.sql


步骤1:@?/rdbms/admin/awrsqrpt.sql
步骤2:选择你要的断点(begin snap和end snap)
步骤3:输入要查看的sql_id

Oracle SQL优化①——查看SQL执行计划的几种方法 在日常的运维工作中,SQL优化是DBA的进阶技能,SQL优化的前提是要看SQL的执行计划是否正确,下面分享几种查看执行计划的方法,每一种方法都各有各的好处,可以根据特定场景选择某种方法。 阅读详情

相关推荐

Oracle执行计划

执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。即就是对一个查询任务,做出一份怎样去完成任务的详细方案。如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。看懂执行计划也就成了SQL优化的先决条件。通过执行计划定位性能问题,定位后就通过建立索引、修改sql等解决问题。

tttzzzqqq2018的博客 8227

Oracle执行计划 讲解(二)

现在我们讲讲oracle执行计划里面每个参数的含义 我们以下面的一个例子来讲解 这里做个补充:trace的类型一共有以下几种 序号 命令 解释 1 SET AUTOTRACE OFF 此为默认值,即关闭Autotrace 2 SET AUTOTRACE ON EXPLAIN 只显示执行计划 3 SET AUTOTRACE ON STAT

guanyi的博客 797

Oracle进阶学习之查看SQL执行计划

执行计划是Oracle数据库优化器根据查询语句和相关统计信息生成的查询执行计划,它描述了查询的执行方式、访问路径、连接方式以及可能使用的索引和操作等信息。通过查看执行计划,我们可以了解查询的执行情况,找到潜在的性能瓶颈,并采取相应的优化措施。综上所述,通过查看SQL执行计划,我们可以深入了解查询的执行方式和性能特征,从而进行优化和调优。通过使用Oracle提供的工具和命令,我们可以方便地查看和分析执行计划,以提高查询的效率和性能。通过分析执行计划中的这些列,我们可以确定查询的性能瓶颈和潜在优化机会。

WaFlask的博客 492

Oracle 执行计划查看方法汇总及优劣对比

在 Oracle 数据库中,查看执行计划是优化 SQL 语句性能的重要工具,文章中总结了几种常用的查看执行计划的方法及其优劣比较

驰兔的博客 2980

病理组学分析系列教程1:使用Python-histolab进行病理图像预处理,tiles切片自动生成

病理图像tiles自动生成,WSI图像预处理

qq_43449643的博客 1740

Hexo博客使用PDF.js

clone了一个pdf.js 然后兴高采烈地到文章里使用{% pdf %}标签 结果浏览器弹出了个下载框(使用GitHub的raw) 不知道是不是因为使用GitHub的原因导致这个问题 后来我测试的时候报了个错 优快云上的解决方法 到时候我再试试把资源放回lib/里面看看行不行 目录1.clone1.1.官方方法1.2.NexT主题方法1.3.补充2.修改文件2.1.修改viewer.htm...

LTFan 961

Oracle查看SQL执行计划的方法

通过这些方法,我们可以更深入地理解SQL语句的执行过程,并据此进行性能优化,虽然文档提供了多种查看执行计划的方法,但在实际应用中,如何根据不同的业务场景和性能需求,选择最合适的执行计划查看方法,以及如何根据执行计划的结果进行有效的SQL优化,仍然是一个值得深入探讨的问题。当检测到符合条件的SQL执行时,Oracle数据库将默认启动对该SQL语句的监视过程,并将收集到的相关数据存储于专用的内存区域中,以便后续用于性能分析与优化。在Oracle数据库中,执行计划主要分为两类:估算的执行计划和实际的执行计划。

weixin_42145355的博客 2532

高通QNN SDK实战:从PyTorch模型到Snapdragon设备的完整部署指南

本文提供了一份详尽的高通QNN SDK实战指南,手把手教你如何将PyTorch模型高效部署到Snapdragon设备。内容涵盖从环境搭建、模型转换、量化优化到多后端部署与性能评测的完整流程,旨在帮助移动AI开发者打通模型落地的“最后一公里”,充分发挥高通平台的硬件加速潜力。

pz8901234的博客 1283

Oracle查看真实执行计划方法总结

方法适用场景优点缺点绝大多数情况最准确、最详细、信息最全需要SQL刚执行过,计划还在Library Cache中长查询、并行查询、资源消耗大的SQL信息极度详细,有交互式流程图主要针对“大”SQLAUTOTRACESQL*Plus/SQLcl环境下的快速检查方便快捷,兼具真实结果和计划需要额外权限,会真正执行SQL(可能产生副作用)仅用于预测,开发阶段初步分析不会真正执行SQL,无风险不是真实计划,可能不准确最佳实践建议:永远优先使用来查看真实执行计划。

ITHomeZSL的博客 1088

【芯片验证随心记】1.SystemVerilog中,rand和randc的区别?如何用constraint实现randc?

在SystemVerilog里,randc 的“不重复循环”特性是用一个 周期性排列器(permutation engine) 实现的,而这个引擎在 LRM 里并没有公开。我们只能在 “用户空间” 用 rand + constraint 去模仿它的行为。每次随机化只取 queue.pop_front(),用完再洗。在4次随机化内,y会依次出现0,1,2,3各一次(顺序随机)每次随机化,x可能是0-3中的任意值,可能连续多次相同。每次随机化时,在未使用的值里随机挑一个;第5次随机化时,重新生成新的排列周期。

qq_43172512的博客 342

STM32F103C8T6通过ESP8266连接阿里云物联网平台(附代码)

STM32F103C8T6连接阿里云物联网平台(1)—阿里云lot Studio控制 Web开发 分享一下自己使用stm32f103c8t6通过ESP_01模块连接阿里云物联网平台,实现温湿度上传和控制命令下达的过程,能力有限,用的是最简单的方法,如有错误,多多担待。 一、硬件选型 1、 stm32f103c8t6 2、ESP_01 wifi模块 3、其他 二、硬件连接 WSP_01 STM32F103C8T6 RXD PA2 TXD PA3 RES PA4 VCC 3.3

weixin_A13253323604 3万+

查看执行计划 oracle,查看Oracle执行计划的几种方法

查看Oracle执行计划的几种方法一、通过PL/SQL Dev工具1、直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。2、先执行 EXPLAIN PLAN FOR select * from tableA where paraA=1,...

weixin_39982452的博客 5168

Python爬虫实战:全面采集国家自然科学基金项目数据的全流程指南

国家自然科学基金委员会(NSFC)支持基础研究、应用基础研究,是我国科研投入的核心项目之一。公开的项目数据包括项目名称、负责人、资助金额、年度、单位等,具备极高科研和数据分析价值。requests:基础HTTP请求库,简单直观:异步HTTP请求库,适合大规模并发:HTML解析,提取数据:处理JavaScript渲染网页pandas:数据分析与清洗:数据库存储:重试机制实现。

2201_76125261的博客 753

oracle 产看执行计划_查看Oracle执行计划的几种方法

一、通过PL/SQL Dev工具1、直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。2、先执行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from t...

weixin_39851872的博客 1199

Claude Code Auto Memory 的 Storage Location,SAP ABAP 项目里的本地记忆仓库应该怎么理解

本文介绍了 SAP ABAP 项目中 Claude Code 的 auto memory 机制,重点探讨了其存储位置的设计原理。auto memory 不是存储在项目目录中,而是默认位于 ~/.claude/projects/<project>/memory/,其中 <project> 基于 Git 仓库路径推导,确保同一仓库下的所有工作目录和分支共享记忆。记忆目录包含入口文件 MEMORY.md(仅加载前 200 行)和详细主题文件,这种分层设计类似 CDS View 架构思想。文章还分析了按 Git 仓

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

Altium Designer 超详细入门教程

本文是一份Altium Designer新手入门教程,详细介绍了从软件基础到PCB制版的全流程。主要内容包括:软件界面介绍与工程创建方法;原理图设计中的元件放置、电气连线、标注添加等操作;PCB设计的布局布线、铺铜和DRC检查;Gerber和钻孔文件的导出方法。教程还提供了分类整理的实用快捷键表和新手避坑指南,强调原理图编译和DRC检查的重要性。通过本教程,新手可以快速掌握AD基本操作,完成简单电路板的设计与制版文件导出。

学习中...... 811

查看Oracle执行计划的几种方法

查看Oracle执行计划的几种方法 一、通过PL/SQL Dev工具     1、直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果。其中,Cost表示cpu的消耗,单位为n%,Cardinality表示执行的行数,等价Rows。     2、先执行 EXPLAIN PLAN FOR   select * from tableA where

风因为飘而舞 492

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

oracle跟踪sql执行计划,执行计划查看_多种方法查看OracleSQL执行计划

一.在线查看执行计划表如果PLAN_TABLE表不存在,执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建plan_table表。1.explain planforselect * from ......2.select * from table(DBMS_XPLAN.Display);二.使用oracle第三方工具:plsql developer(F5)Toad ...

weixin_42122306的博客 537

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

oracle 产看执行计划_ORACLE数据库查看执行计划的方法

一、什么是执行计划(explain plan)执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。二、如何查看执行计划1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示注意:PL/SQL Developer 工具并不完全支持所有的...

weixin_39736934的博客 191

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

oracle 产看执行计划_查看ORACLE执行计划的几种常用方法

SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向。执行计划的定义:执行目标SQL的所有步骤的组合。我们首先列出查看执行计划的一些常用方法:1.explain plan命令PL/SQL Developer中通过快捷键F5就可以查看目标SQL的执行计划了。但其实按下F5后,实...

weixin_39672011的博客 210

Oracle 执行计划查看方法汇总及优劣比较

作者 | JiekeXu来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)如需转载请联系授权 |(个人微信 ID:JiekeXu_DBA)大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来学习 Oracle 执行计划查看方法汇总及优劣比较,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!1)执行计划执行计划是一条 SQ...

JiekeXu的博客 4090

查看Oracle执行计划的几种常用方法

《查看Oracle执行计划的几种常用方法-系列1》(http://blog.youkuaiyun.com/bisal/article/details/38919181)这篇博文中曾提到一个隐藏问题: “隐藏问题2: 实验这部分内容发现使用select * from table(dbms_xplan.display_awr('sql_id'));并没有结果,@黄玮老师说有可能是AWR收集的是top的SQL,...

u012887743的博客 365

oracle mysql 执行计划怎么看_ORACLE数据库查看执行计划的方法

一、什么是执行计划(explain plan)执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。二、如何查看执行计划1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均...

weixin_42378094的博客 732

Oracle中使用DBMS_XPLAN查看执行计划的方法

一、简介 DBMS_XPLAN是Oracle提供的一个用于查看SQL计划,包括执行计划和解释计划的包.DBMS_XPLAN包给出了更加简化的获取和显示计划的方式。 DBMS_XPLAN包不仅可以获取解释计划,还可以用来输出存储在AWR、SQL调试集、缓存的SQL游标,以及SQL基线中的语句计划。下面将重点讨论关于DBMS_XPLAN包在解释计划和执行计划上的应用。 首先看一个经常使用的查看某条语句的解释计划的示例: //登录oracle sqlplus / as sysdba //查看执行计划 ex

weixiaohuai的博客 5400

oracle 执行计划 ppt,oracle查看执行计划的方法

查看执行计划的方法Explain Plan For SQL不实际执行SQL语句,生成的计划未必是真实执行的计划必须要有plan_tableSQLPLUS AUTOTRACE除set autotrace traceonly explain外均实际执行SQL,但仍未必是真实计划必须要有plan_tableSQL TRACE需要启用10046戒者SQL_TRACE一般用tkprof看的更清楚些,当然10...

weixin_35951275的博客 156
上一篇: spring-boot 注解详解
下一篇: Redis集群搭建与简单使用
九月刑天
博客等级 码龄10年 38粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值