Oracle Explain Plan,hint解释与示例

 

Oracle 专业dba博客:http://blog.csdn.net/tianlesoftware

 

Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式。

因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 。在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,在另一个时刻,却可能很差,这也是CBO 取代RBO的原因之一,规则是死的,而数据是时刻变化的,为了获得最正确的执行计划,只有知道表中数据的实际情况,通过计算各种执行计划的成本,则其最优,才是最科学的,这也是CBO的工作机制。 在SQL代码中加入Hint,特别是性能相关的Hint是很危险的做法。

参考:Oracle Hint

hint格式:/*+        */

FULL Hint

该Hint告诉优化器对指定的表通过全表扫描的方式访问数据。

示例:

         SQL> select /*+full(dave) */ * from dave;

 

要注意,如果表有别名,在hint里也要用别名, 这点在前面已经说明。

 

 

Explain Plan执行计划是用于查看sql每个执行步骤情况信息的一个优化工具系列之一。

如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题。

看懂执行计划也就成了SQL优化的先决条件。 这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题。

参考:Oracle 执行计划(Explain Plan) 说明

使用SQL

SQL>EXPLAIN PLAN FOR sql语句;

SQL>SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));

示例:

SQL> EXPLAIN PLAN FOR SELECT * FROM DAVE;

已解释。

SQL> SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));

或者:

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

 

 

关于Oracle优化器,参考:

         Oracle Optimizer CBO RBO

http://blog.csdn.net/tianlesoftware/archive/2010/08/19/5824886.aspx

 

转载于:https://www.cnblogs.com/svennee/p/4165331.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 指定配置文件启动redis

redis启动1. 下载,修改redis.conf文件2. 指定配置文件启动3. 连接redis1. 下载,修改redis.conf文件 下载redis.conf wget http://download.redis.io/redis-stable/redis.conf修改配置 bind 127.0.0.1 # 注释掉这部分,这是限制redis只能本地…

UVa 10820 (打表、欧拉函数) Send a Table

题意&#xff1a; 题目背景略去&#xff0c;将这道题很容易转化为&#xff0c;给出n求&#xff0c;n以内的有序数对(x, y)互素的对数。 分析&#xff1a; 问题还可以继续转化。 根据对称性&#xff0c;我们可以假设x<y&#xff0c;当xy时&#xff0c;满足条件的只有(1, 1)。…

前端学习(1309):创建网站服务器

//创建网站服务器模板 const http require(http); //网站服务器对象 const app http.createServer(); //客户端有请求 app.on(request, (req, res) > {res.end(<h2>hello user</h2>) }); //监听端口 app.listen(3000); console.log(服务器启动成功); 运行结果…

javascript 异步加载 延时问题

异步加载可以理解为多线程加载。某个dom操作完成了&#xff0c;但是请求还在发送的路上。 等某个方法调用完成就行&#xff0c;延时调用即可。 // 下面是延时1s&#xff0c;向某个url发送请求。 setTimeout(() > {$.ajax({url: url,type: get,success: r > {console.lo…

前端学习(1310):http协议

请求 响应 //创建网站服务器模板 const http require(http); //网站服务器对象 const app http.createServer(); //客户端有请求 app.on(request, (req, res) > {//获取请求方式console.log(req.method);res.end(<h2>hello user</h2>) }); //监听端口 app.lis…

文件夹锁定(Source)

文件夹锁定&#xff08;Source&#xff09;private void Lock(string folderPath){ try { string adminUserName Environment.UserName;// getting your adminUserName DirectorySecurity ds Directory.GetAccessControl(folderPath); FileSystem…

openfeign调用 HttpServletRequest作为参数 报错..

debug1. 问题起因2. 问题分析3. 问题解决1. 问题起因 需要将业务数据放入HttpServletRequest的请求头里面。被调用的模块&#xff0c;rest接口设计是以HttpServletRequest作为 参数的。于是夫&#xff0c;秉信feign的接口设计必须和提供者参数一样。消费者调用feign接口&#…

delphi 第一个字符不能是小数点_元字符的详细解析

上一篇文章介绍了正则的用处以及正则中这些元字符的基本含义&#xff0c;但是如果我们只知道那些元字符的含义&#xff0c;不知道怎么使用和加以练习&#xff0c;那么对于正则我们还只是看见了门槛&#xff0c;并没有踏入&#xff0c;那么本篇文章就让我们迈起脚步正式走入正则…

前端学习(1311):请求报文

//创建网站服务器模板 const http require(http); //网站服务器对象 const app http.createServer(); //客户端有请求 app.on(request, (req, res) > {//获取请求方式//console.log(req.method);//获取请求地址//console.log(req.url);if (req.url /index || req.url /)…

hdu 1016

以前写过的&#xff0c;再贴出来看看。。。 素数环问题 预处理搜索 AC代码&#xff1a; #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <ctype.h> using namespace std; int ou…

“export ‘default‘ (imported as ‘echarts‘) was not found in ‘echarts‘

hhh, echarts5升级了啦&#xff0c;以前可以这样引入的啦。 import echarts from "echarts";but&#xff0c;现在 import * as echarts from echarts;you know

jupyter中保存图片_露哥的摸爬滚打| Jupyter从零开始

今天&#xff0c;是7月的最后的一天适合结束一些东西开始一些新的东西没错我要开始新的板块啦取个名字&#xff0c;就叫做“露哥的摸爬滚打| Jupyter”01讲在前面在这里&#xff0c;主要是我的笔记或者心得&#xff0c;所以并不能保证百分百正确&#xff0c;当然也欢迎大家多多…

前端学习(1312):响应报文

//创建网站服务器模板 const http require(http); //网站服务器对象 const app http.createServer(); //客户端有请求 app.on(request, (req, res) > {//获取请求方式//console.log(req.method);//获取请求地址//console.log(req.url);//响应报文res.writeHead(200, {cont…

Java8 流式递归树形菜单

Web端常用界面 树形菜单1. 说明2. 表设计3. 普通递归4. 流式递归语法糖1. 说明 树形菜单在web后台管理系统, 权限管理中基本上很容易见到。如&#xff1a;csdn的个人后台管理系统。 只不过这个目录只有两层。三层的如下&#xff1a; 甚至可以套n层。 为什么要递归&#xff1…

catia钣金根据线段折弯_折弯大神分析钣金折弯下刀顺序

相关阅读&#xff1a;钣金折弯设计要诀&#xff0c;这就是钣金设计界的武功秘籍solidworks在钣金中折弯系数表如何设置折弯系数统计表及公司正在使用的系数表工厂在用折弯工艺规范&#xff01;折弯机模具如何选用&#xff1f;不是不能折&#xff0c;是你折弯刀不全&#xff0c;…

前端学习(1313):get请求参数

//创建网站服务器模板 const http require(http); //内置模块 const url require(url); //网站服务器对象 const app http.createServer(); //客户端有请求 app.on(request, (req, res) > {//获取请求方式//console.log(req.method);//获取请求地址//console.log(req.url…

cmd pc如何开多个微信_抖音打击刷赞刷粉,240多个百万粉丝大V被封;微信PC版再更新...

1. 微信PC版更新&#xff0c;支持在小程序中使用微信支付新榜讯 12月19日&#xff0c;微信PC端推出内测版&#xff0c;新版本支持以下新功能&#xff1a;1. 新增看一看精选内容2. 新的订阅号浏览体验3. 支持在小程序中使用微信支付2. 抖音“啄木鸟2019”行动打击刷赞刷粉&#…

nuxt.js 配置后端的请求地址

1、在nuxt.config.js中配置 env上下文环境 81是网关所在 module.exports {env: {baseUrl: process.env.BASE_URL || http://localhost:81/api/}, }2、axios取到路径 使用 process.env.baseUrl取值. const service axios.create({baseURL: process.env.baseUrl, // api的b…

回溯法 -数据结构与算法

1.回溯法算法思想&#xff1a; 定义&#xff1a; 回溯法(探索与回溯法)是一种选优搜索法&#xff0c;按选优条件向前搜索&#xff0c;以达到目标。但当探索到某一步时&#xff0c;发现原先选择并不优或达不到目标&#xff0c;就退回一步重新选择&#xff0c;这种走不通就退回再…