执行计划是由各类 *** 作符组成的一颗树,也就是排序好的 *** 作符的展现形式,从内到外依次执行
一般的执行计划格式为
OP1
OP2
OP3
OP4
OP5
OP6
OP7
OP8
缩进越多的越先执行,同样缩进的上面的先执行,下面的后执行,上下的优先级高于内外
OP3->OP4->OP2->OP7->OP8->OP6->OPT5->OP1
扩展资料
同一个SQL在共享池中有多个不同的执行计划被称为版本(VERSION)。即使是使用了良好的绑定变量,但仍然有可能会出现多个不同的执行计划,即VERSION_COUNT比较大。
这个字段也表示有多少个child
cursors在一个parent下面。
由于配置参数、执行环境(用户)等不同,即使一个相同的sql语句,在执行的过程中,会出现各种各样的执行计划。每个执行计划的执行,也就产生了一个child
cursor。version_count就表示这个意义。
可以通过以下方法来确定是否真的具有那么多的version_count:
ALTER
SESSION
SET
EVENTS
'immediate
trace
name
LIBRARY_CACHE
level
4'
来dump出内存来确信改sql是否具有那么多的version,也可以通过查询v$sql
(可以通过hash_value跟v$sqlarea联合)来看child_number的个数
SQL执行计划指的是查看一条SQL语句在数据库中实际执行的时候,一步步的分别都做了什么,具体数据库查看执行计划的 *** 作步骤如下:
1、首先,打开一个的sql server的数据库管理界面当中。
2、然后选中的要执行的sql语句。
3、点击了的菜单中的查询的菜单。
4、点击了查询菜单之后,d出了下拉菜单选中为显示估计的执行计划的选项。
5、然后点击执行计划。
6、可以看到是相关的执行计划的相关的数据。
简单一点说就是oracle如何执行sql语句的,比如说你去一个地方,事先会计划好怎么坐车一样,先坐公交到哪儿再坐地铁,oracle的执行计划也是如此,就是一步一步执行sql,比如说先查数据再排序,或者先作子查询再作主查询什么的。oracle的执行计划很复杂的,一般我们看到的执行计划都是oracle通过内部算法计算以后选择的一个消耗比较少的执行路径,就像我们去哪里也要选择一条捷径一样的道理。呵呵…欢迎分享,转载请注明来源:内存溢出
评论列表(0条)