- 浏览: 91793 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (139)
- oracle基础 (27)
- oracle sql编程及优化 (14)
- ELK (4)
- java (11)
- java设计模式 (0)
- 互联网知识 (6)
- 安装MongoDB (1)
- MongoDB (0)
- spark (1)
- scala (1)
- spring boot (3)
- spring cloud (8)
- redis (6)
- virtualbox (3)
- docker (7)
- rabbitmq (0)
- rocketmq (2)
- k8s (8)
- ubuntu (11)
- centos (3)
- mysql (4)
- nginx (7)
- tomcat (5)
- postman (1)
- other (10)
最新评论
-
lihao312:
insert all功能好强大哦 之前都没有用到过
oracle 多表插入 insert all 用法(即列转行)
- 解释计划
语句EXPLAIN PLAN用来显示优化器为SQL语句所选择的执行计划。需要说明的是当你得到了解释计划输出的时候,你其实是得到了当SQL语句执行的时候应该采用的预期执行计划。你并没有得到实际的执行计划以及与其相关的数据源执行统计信息。你所得到的只是估计值,而不是实际值。将估计的信息称为解释计划输出 ,而把实际信息称为执行计划输出 来区分实际和预期的执行计划。
解释计划例子:
SQL> explain plan for 2 select * from small_customers; Explained SQL> select * from table(dbms_xplan.display); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- Plan hash value: 1819012793 -------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 6 | 156 | 3 (0)| 00:00 | 1 | TABLE ACCESS FULL| SMALL_CUSTOMERS | 6 | 156 | 3 (0)| 00:00 -------------------------------------------------------------------------------- Note ----- - dynamic sampling used for this statement 12 rows selected
缩进格式:
select id, parent_id, operation from (select level lvl, id, parent_id, lpad(' ', level) || operation || ' ' || options || ' ' || object_name as operation from plan_table start with id = 0 connect by prior id = parent_id) order by lvl desc, id;
解释计划输出最令人郁闷的地方就是它与语句实际执行时所使用的计划可能是不一致的。使用解释计划的时候以下3点可能导致计划输出与实际执行计划不一致的地方:
- 解释计划是基于你使用它的时候的环境来生成的
- 解释计划不考虑绑定变量的数据类型(所有的绑定变量都是VARCHAR2的)
- 解释计划不"窥视"绑定变量的值
对于解释计划来说,数据类型都被认为是一样的(都是字符串)。然而,当语句真正执行的时候所准备的执行计划却要考虑数据类型,ORACLE隐式地将字符串数据类型转换为数值类型来匹配绑定变量的数据类型。
如何学会阅读计划:
- 学会识别和分割父子组
- 掌握计划中运算执行的顺序
- 学会以途述的形式来阅读计划
按照执行顺序显示的计划运算:
explain plan for select * from test_1; select * from table(dbms_xplan.display); select id, parent_id, operation from (select level lvl, id, parent_id, lpad(' ', level) || operation || ' ' || options || ' ' || object_name as operation from plan_table start with id = 0 connect by prior id = parent_id) order by lvl desc, id;
- 执行计划
当一条SQL语句执行的时候将会生成该语句的实际执行计划。在语句被硬解析之后,所选的执行计划会被存到库高速缓存中以便以后重用。可以通过查询V$SQL_PLAN来查看计划运算。
select sql_id from v$sql where sql_text like '%TEST%'; select * from v$sql_plan where sql_id='7dfcmhhhxjspn' and child_number=0; 或者用以下语句来代替v$sql_plan select * from table(dbms_xplan.display_cursor('7dfcmhhhxjspn',null,'ALLSTATS LAST')); 也可以通过一条语句: SELECT * FROM TEST; SELECT XPLAN.* FROM (SELECT MAX(SQL_ID) KEEP(DENSE_RANK LAST ORDER BY LAST_ACTIVE_TIME) SQL_ID, MAX(CHILD_NUMBER) KEEP(DENSE_RANK LAST ORDER BY LAST_ACTIVE_TIME) CHILD_NUMBER FROM V$SQL WHERE UPPER(SQL_TEXT) LIKE '%SELECT * FROM TEST%' AND UPPER(SQL_TEXT) NOT LIKE '%FROM V$SQL WHERE UPPER(SQL_TEXT) LIKE %') SQLINFO, TABLE(DBMS_XPLAN.display_cursor(SQLINFO.SQL_ID, SQLINFO.CHILD_NUMBER, 'ALLSTATS LAST')) XPLAN;
发表评论
文章已被作者锁定,不允许评论。
-
oracle instr substr结合截取字符串
2014-10-11 11:44 0select substr(email, ... -
oracle is null 优化
2014-05-25 22:17 1269select * from emp where sys_op ... -
Oracle like 优化
2014-05-25 21:02 10891。尽量不要使用 like '%%' 2。对于 like ... -
SQL语句去掉重复数据
2014-03-17 16:07 637有的时候会有部分字段重复,比如ID值不一样,但EMAIL一样 ... -
in和or的性能区别
2012-11-23 16:29 0or会走索引 -
关于计划的稳定性与控制
2012-11-09 17:11 626oracle的基于成本的优化器(CBO)最令人郁闷 ... -
Oracle表与索引的分析及索引重建
2012-11-05 15:22 0转载:Oracle表与索引的分析及索引重建 ... -
ORACLE直方图学习笔记
2012-11-05 14:43 550引用:ORACLE直方图学习笔记 关于直方图的 ... -
oracle 索引介绍(二)
2012-11-05 11:31 639索引也可以像 ... -
oracle 索引介绍(一)
2012-11-05 11:31 703索引广义上可以分为3类:B-树索引、位图索引以及索引组织表。 ... -
analyze和dbms_stats函数的区别
2012-10-31 18:08 677analyze和dbms_stats函数都是收集一些统计信息, ... -
oracle表联结方法
2012-10-29 16:22 657联结的方法有:嵌套循环联结、散列联结、排序-合并联结 ... -
oracle数据访问途径之索引扫描
2012-10-29 16:22 681oracle总共只有两种基本 ... -
oracle数据访问途径之全扫描
2012-10-29 16:22 614oracle总共只有两种基本 ... -
autotrace 命令
2012-10-24 10:06 671在SQL*Plus中,你可以通过设置autotrace ... -
聚簇因子笔记
2012-10-24 10:05 5711、聚簇因子(Clustering f ...
相关推荐
"Oracle 执行计划详解" Oracle 执行计划是数据库性能优化的关键。为了更好地理解和优化 Oracle 数据库的执行计划,我们需要了解执行计划的生成过程、优化方法和执行计划的解读方法。 执行计划生成过程 执行计划的...
Oracle执行计划参数解释,Oracle SQL优化的基础是看懂Oracle的执行计划,本文当系统整理了Oracle执行计划里面的各种参数。
Oracle 执行计划解读 Oracle 执行计划是一种查询执行路径的表示形式,它展示了 Oracle 数据库在执行查询时访问数据的路径。下面是 Oracle 执行计划的详细解读,包括执行计划的定义、访问数据的方式、执行计划层次...
Oracle执行计划是数据库管理系统在处理SQL语句时的预估工作流程,它是Oracle优化器根据当前数据分布、索引情况和系统资源等信息选择的最佳执行策略。了解和分析执行计划对于提升SQL语句的性能至关重要。 一、生成...
Oracle 执行计划是数据库管理系统在处理SQL查询时制定的一系列步骤,用于高效地检索和处理数据。它是Oracle数据库优化器(Optimizer)根据统计信息、成本估算和已存在的索引等信息生成的。优化器有两种主要的工作...
### Oracle执行计划深入解析 #### 引言 在数据库领域,尤其对于大型企业级应用,Oracle数据库因其强大的功能和稳定性而被广泛采用。在Oracle中,执行计划是数据库优化器根据SQL语句特性生成的一系列步骤,用于指导...
Oracle 执行计划详解是数据库管理系统中一个非常重要的概念。本文将详细介绍 Oracle 执行计划的相关概念、访问数据的存取方法、表之间的连接等内容,并对总结和概述,以便于理解和记忆。 一、相关的概念 1. Rowid ...
除了以上概念,Oracle执行计划还包括其他访问方法,如索引扫描(Index Scan)、索引唯一扫描(Index Unique Scan)、索引快速全扫描(Index Fast Full Scan)以及各种类型的连接操作,如嵌套循环(Nested Loop)、...
ORACLE 执行计划和 SQL 调优 ORACLE 执行计划和 SQL 调优是关系数据库管理系统中非常重要的概念。执行计划是 Oracle 优化器生成的,用于描述如何访问数据库中的数据的计划。execute plan 中包括了访问路径、表扫描...
Oracle执行计划详解,包括oracle执行顺序和索引详细介绍
《Oracle执行计划与SQL优化实例》这一主题深入探讨了数据库管理与优化的关键方面,尤其针对Oracle数据库环境。本文旨在解析并扩展此PPTX文件中提及的重要知识点,涵盖执行计划的概念、获取方法、解读技巧以及SQL优化...
ORACLE执行计划和SQL调优
oracle执行计划详细解释
Oracle 执行计划 Oracle 执行计划是 Oracle 数据库中的一种机制,用于确定如何访问存储器,得到需要的结果集。执行计划的主要内容包括访问方式和访问顺序。下面是 Oracle 执行计划的详细知识点: 一、执行计划的...
总之,Oracle执行计划的稳定性与数据库性能紧密相关,理解并掌握优化器的工作原理以及如何控制执行计划的选择,是优化数据库性能的关键。在基于代价的优化器模式下,虽然存在执行计划不稳定的可能,但通过合理管理和...
总之,Oracle执行计划的稳定性对于数据库的高效运行具有重要意义。通过合理管理统计信息、选择合适的优化器模式、利用SQL提示和监控工具,可以有效控制执行计划的稳定性,从而提升数据库的整体性能。
"Oracle 执行计划" Oracle 执行计划是 Oracle 数据库中的一种机制,用于优化 SQL 语句的执行过程。它决定了如何访问存储器,得到需要的结果集。执行计划的主要内容包括访问方式和访问顺序。 Oracle 执行计划的生成...