1.创建执行计划表
脚本位于:%ORACLE_HOME%/product/11.1.0/db_1/RDBMS/ADMIN/utlxplan.sql
--PLAN_TABLE create table PLAN_TABLE ( statement_id varchar2(30), plan_id number, timestamp date, remarks varchar2(4000), operation varchar2(30), options varchar2(255), object_node varchar2(128), object_owner varchar2(30), object_name varchar2(30), object_alias varchar2(65), object_instance numeric, object_type varchar2(30), optimizer varchar2(255), search_columns number, id numeric, parent_id numeric, depth numeric, position numeric, cost numeric, cardinality numeric, bytes numeric, other_tag varchar2(255), partition_start varchar2(255), partition_stop varchar2(255), partition_id numeric, other long, distribution varchar2(30), cpu_cost numeric, io_cost numeric, temp_space numeric, access_predicates varchar2(4000), filter_predicates varchar2(4000), projection varchar2(4000), time numeric, qblock_name varchar2(30), other_xml clob );
也可以创建公共计划表
1.通过运行utlxplan.sql脚本,以自己选择的模式创建计划表。
2.创建计划表的公共同名对象。
3.将对计划表的访问授权为公共。
CREATE PUBLIC SYNONYM plan_table FOR plan_table; GRANT SELECT,INSERT,UPDATE,DELETE ON plan_table TO PUBLIC;
2.计划表中常用列:
列 | 描述 |
statement_id | 赋给执行计划的名称 |
operation |
执行的数据库操作,可以是:
例如,访问表的操作是TABLE ACCESS |
options | 操作中选项的名称。例如,全表扫描的选项是FULL |
object_name | 操作中引用的数据库对象的名称 |
object_type | 对象的属性。例如,唯一索引的属性为UNIQUE |
id | 执行计划中赋给该操作的数字 |
parent_id | 执行计划中当前步骤的父数字。parent_id值与父步骤中的id值有关 |
position | 具有相同parent_id的步骤的处理顺序 |
cost | 操作的工作单元的估计值。基于成本的优化使用磁盘I/O、CPU使用率和内存利用率作为工作单元。所以,成本是磁盘I/O数目和执行操作所使用的CPU和内存数量的估计值 |
3.创建执行计划
EXPLAIN PLAN SET STATEMENT_ID = 'TEST_CONTENT' FOR SELECT C.ID, C.TITLE, C.SUBHEAD, C.SUMMARY FROM TEST_CONTENT C WHERE EXISTS (SELECT 1 FROM TEST_SORT S WHERE S.ID = C.SORT_ID);
4.查看执行计划
SELECT ID || DECODE(ID, 0, '', LPAD(' ', 2 * (LEVEL - 1))) || ' ' || OPERATION || ' ' || OPTIONS || ' ' || OBJECT_NAME || ' ' || OBJECT_TYPE || ' ' || DECODE(COST, NULL, '', 'Cost = ' || POSITION) AS EXECUTION_PLAN FROM PLAN_TABLE CONNECT BY PRIOR ID = PARENT_ID AND STATEMENT_ID = '&v_statement_id' START WITH ID = 0 AND STATEMENT_ID = '&v_statement_id';
将第二条SQL语句保存在 :%ORACLE_HOME%/product/11.1.0/db_1/RDBMS/ADMIN/explain_plan.sql,下次直接使用。
5.包含表连接的执行计划
EXPLAIN PLAN SET STATEMENT_ID = 'TEST_CONTENT2' FOR SELECT S.ID AS SID, S.NAME, C.TITLE, SUBHEAD, SUMMARY FROM TEST_CONTENT C, TEST_SORT S WHERE C.SORT_ID = S.ID AND C.SORT_ID = 170
执行上面的查看执行计划语句查看执行计划。
6.执行计划包括
1)语句所引用的表的顺序
2)语句所涉及的表的访问方法
3)语句中连接操作所影响到的各表的连接方法。
相关推荐
"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 执行计划的生成...