Oracle EXPLAIN PLAN

Oracle EXPLAIN PLAN 是用于生成 SQL 语句执行计划的命令,帮助分析查询性能而不实际执行 SQL‌。‌‌‌
1、怎么生成和查看执行计划

    ‌基本使用方法‌:在 SQL 语句前加上EXPLAIN PLAN FOR,执行后计划会存入 PLAN_TABLE 表。
        示例:EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10;
        执行后显示"已解释",表示计划已生成。‌‌‌
    ‌查看执行计划的两种方式‌:
        ‌推荐方式‌:使用SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());以格式化形式展示。
        ‌直接查询‌:SELECT * FROM plan_table;查看原始数据。‌‌‌
    ‌使用 AUTOTRACE 快速查看‌:在 SQL*Plus 中设置SET AUTOTRACE ON EXPLAIN可直接显示执行计划。
        SET AUTOTRACE ON:同时显示执行计划和统计信息。
        SET AUTOTRACE TRACEONLY:只显示计划和统计,不显示查询结果。

2、执行计划怎么解读

    ‌执行顺序判断‌:遵循‌从右向左、从上到下‌的原则,缩进最大的行最先执行。
        同一级别中,靠上的节点优先执行。
        有子节点时,先从最靠右的子节点开始。
    ‌关键字段含义‌:
        ‌ID‌:执行步骤编号,表示树形结构中的层级关系。
        ‌Operation‌:操作类型,如全表扫描 (TABLE ACCESS FULL)、索引扫描 (INDEX RANGE SCAN)、连接操作 (HASH JOIN/NESTED LOOP)。
        ‌Cost‌:执行成本,数值越低表示优化器认为该计划越高效。
        ‌Rows‌:优化器预估的返回行数,依赖统计信息准确性。
        ‌Object_Name‌:操作涉及的表名或索引名。‌‌‌
    ‌常见操作类型‌:
        ‌表访问‌:全表扫描适合小表,索引扫描适合大表精准查询。
        ‌连接操作‌:嵌套循环适合小表连接,哈希连接适合大数据集。
        ‌子查询‌:相关子查询可能性能较差,可考虑改写为 JOIN。‌‌‌

使用时的注意事项

    ‌执行计划是预估的‌:EXPLAIN PLAN 不会实际执行 SQL,生成的计划可能与实际执行有出入。
        适合测试敏感操作 (如 DDL/DML) 而不影响生产数据。
        实际执行可用DBMS_XPLAN.DISPLAY_CURSOR查看已执行 SQL 的真实计划。‌‌‌
    ‌依赖统计信息‌:执行计划准确性高度依赖表和索引的统计信息。
        统计信息包括行数、块数、直方图等。
        统计信息过时可能导致优化器选择不佳的执行计划。
    ‌权限要求‌:需要对输出表有插入权限,对 SQL 涉及的表有访问权限。
        默认输出表为当前 schema 下的 PLAN_TABLE。
        可使用SET STATEMENT_ID区分不同执行计划。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值