sql执行计划

一、概述

执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述,即就是对一个查询任务,做出一份怎样去完成任务的详细方案。

如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。 看懂执行计划也就成了SQL优化的先决条件。 通过执行计划定位性能问题,定位后就通过建立索引、修改sql等解决问题。

 

查看sql执行计划常用方式:

1. explain plan for

适用场景:

通过explain plan for命令查看SQL的执行计划,这种方法SQL并不真实执行,一般适用于上线前的SQL预审,尤其对DML语句,由于SQL不执行,不用担心对生产数据造成影响。这种方法查看的执行计划有Predicate Information,无Statistics,查看到的执行计划不一定真实,第三方工具PL/SQL Developer中F5查看执行计划也是调用的这个方法。 

 示例:我这里用的工具为datagrid

复制代码
-- 待执行的sql
EXPLAIN PLAN FOR(select * from MEM_MEMBERS where CN_NAME like '纯子');
-- 查看执行计划
SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
-- 或者
select * from table(dbms_xplan.display);

-- 执行结果
Plan hash value: 2532924901

-------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                       |     1 |   314 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| MEM_MEMBERS           |     1 |   314 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN                  | IDX_FFP_MEMBER_CNNAME |     1 |       |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("CN_NAME"='纯子')
复制代码

 

 

 

 

 

 

参考:

Oracle 执行计划(Explain Plan)

Oracle之sql优化

posted @   一帘幽梦&nn  阅读(982)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击查看具体代码内容
点击右上角即可分享
微信分享提示