设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
由rownum引起的执行计划变化,谁能解析下? ...
返回列表
发新帖
由rownum引起的执行计划变化,谁能解析下?
[复制链接]
11
|
9
|
2010-1-4 13:39:56
|
显示全部楼层
|
阅读模式
由rownum引起的执行计划变化,谁能解析下?
第一个语句执行3 秒钟能出结果,
第二个语句执行10分钟才能出结果;
请高手解析下,只是对结果进行选择下,怎么会这么久呢?
pro_bbossbpm@BL1> SELECT C.XMLDATA, A.CUSTOMERORDERMEMBERASSOCID
2FROM ORDERINFOSYNCINSTANCE A
3INNER JOIN CUSTOMERORDERMEMBERASSOC B
4ON A.CUSTOMERORDERMEMBERASSOCID =B.CUSTOMERORDERMEMBERASSOCID
5INNER JOIN ORDERINFO C
6ON B.ORDERINFOID = C.ORDERINFOID
7WHERE C.CUSTOMERNUMBER = '00020069000803' AND A.COMPANYID = '000' AND B.TYPE = 2
8AND C.PRODUCTOFFERINGID = '1242' AND C.OPERATIONSUBTYPEID = 1
9ORDER BY A.SYNCID ASC;
已用时间:00: 00: 00.00
执行计划
----------------------------------------------------------
Plan hash value: 1580940903
----------------------------------------------------------------------------------------------------
| Id| Operation
| Name
| Rows| Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT
|
|3087 | 449K| 14457 (1)| 00:02:54 |
| 1 |SORT ORDER BY
|
|3087 | 449K| 14457 (1)| 00:02:54 |
| 2 | TABLE ACCESS BY INDEX ROWID | ORDERINFOSYNCINSTANCE| 1 |16 | 3 (0)| 00:00:01 |
| 3 |NESTED LOOPS
|
|3087 | 449K| 14456 (1)| 00:02:54 |
|*4 | HASH JOIN
|
|2588 | 336K|6875 (2)| 00:01:23 |
| 5 |TABLE ACCESS BY INDEX ROWID| ORDERINFO
|2342 | 269K|1978 (1)| 00:00:24 |
|*6 | INDEX SKIP SCAN | SYS_C0027014
|2342 | | 776 (0)| 00:00:10 |
|*7 |TABLE ACCESS FULL
| CUSTOMERORDERMEMBERASSOC |1404K|20M|4887 (2)| 00:00:59 |
|*8 | INDEX RANGE SCAN
| SYS_C0027017
| 1 | | 2 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("B"."ORDERINFOID"="C"."ORDERINFOID")
6 - access("C"."PRODUCTOFFERINGID"='1242' AND "C"."OPERATIONSUBTYPEID"=1 AND
"C"."CUSTOMERNUMBER"='00020069000803')
filter("C"."OPERATIONSUBTYPEID"=1 AND "C"."CUSTOMERNUMBER"='00020069000803' AND
"C"."PRODUCTOFFERINGID"='1242')
7 - filter("B"."TYPE"=2)
8 - access("A"."CUSTOMERORDERMEMBERASSOCID"="B"."CUSTOMERORDERMEMBERASSOCID" AND
"A"."COMPANYID"='000')
pro_bbossbpm@BL1> SELECT XMLDATA, CUSTOMERORDERMEMBERASSOCID
2FROM (
3SELECT C.XMLDATA, A.CUSTOMERORDERMEMBERASSOCID
4FROM ORDERINFOSYNCINSTANCE A
5INNER JOIN CUSTOMERORDERMEMBERASSOC B
6ON A.CUSTOMERORDERMEMBERASSOCID =B.CUSTOMERORDERMEMBERASSOCID
7INNER JOIN ORDERINFO C
8ON B.ORDERINFOID = C.ORDERINFOID
9WHERE C.CUSTOMERNUMBER = '00020069000803' AND A.COMPANYID = '000' AND B.TYPE = 2
10AND C.PRODUCTOFFERINGID = '1242' AND C.OPERATIONSUBTYPEID = 1
11ORDER BY A.SYNCID ASC
12)
13WHERE ROWNUM < 2;
已用时间:00: 00: 00.03
执行计划
----------------------------------------------------------
Plan hash value: 142012335
----------------------------------------------------------------------------------------------------
| Id| Operation
| Name
| Rows| Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT
|
| 1 |2015 |8383 (1)| 00:01:41 |
|*1 |COUNT STOPKEY
|
| | |
|
|
| 2 | VIEW
|
| 2 |4030 |8383 (1)| 00:01:41 |
| 3 |NESTED LOOPS
|
| 2 | 298 |8383 (1)| 00:01:41 |
| 4 | NESTED LOOPS
|
|1057 | 32767 |6304 (1)| 00:01:16 |
|*5 |TABLE ACCESS BY INDEX ROWID| ORDERINFOSYNCINSTANCE|3284K|50M|2158 (1)| 00:00
| 6 | INDEX FULL SCAN | SYS_C00110503
|4015 | |11 (0)| 00:00:01 |
|*7 |TABLE ACCESS BY INDEX ROWID| CUSTOMERORDERMEMBERASSOC | 1 |15 | 2 (0)| 00:00:01 |
|*8 | INDEX UNIQUE SCAN | SYS_C00110494
| 1 | | 1 (0)| 00:00:01 |
|*9 | TABLE ACCESS BY INDEX ROWID | ORDERINFO
| 1 | 118 | 2 (0)| 00:00:01 |
|* 10 |INDEX UNIQUE SCAN
| SYS_C00110502
| 1 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(ROWNUM<2)
5 - filter("A"."COMPANYID"='000')
7 - filter("B"."TYPE"=2)
8 - access("A"."CUSTOMERORDERMEMBERASSOCID"="B"."CUSTOMERORDERMEMBERASSOCID")
9 - filter("C"."OPERATIONSUBTYPEID"=1 AND "C"."CUSTOMERNUMBER"='00020069000803' AND
"C"."PRODUCTOFFERINGID"='1242')
10 - access("B"."ORDERINFOID"="C"."ORDERINFOID")
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
这种问题 找棉花
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
ROWNUM干的
COUNT STOPKEY 这玩意搞的
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
ORDER BY A.SYNCID ASC
|*5 |TABLE ACCESS BY INDEX ROWID| ORDERINFOSYNCINSTANCE
|6 | INDEX FULL SCAN
| SYS_C00110503
避免了排序~
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
有解决方法么?
除了用Hint。
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
[
本帖最后由 zergduan 于 2010-5-28 16:42 编辑
]
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
optimizer_mode是否设置成first_rows了??
CUSTOMERORDERMEMBERASSOC 表的ORDERINFOID上加个索引试试
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
对头,rownum会导致执行计划改变。
如何禁止这种改变呢?
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
这种改变,需要了解优化器想法,其实很容易解释这种计划的变更。
为什么加了rownum就改变了计划呢?
我怀疑这些字段没有柱状图,但是表可能有点大,数量级(不是数据行,是数据级)应该在10W。ORACLE无法知道大概取出多少行? 于是HASH变nested loop,为什么会变。其实ORACLE知道HASH比nested loop要好,变的原因是ORACLE还要考虑sort和index full scan,table full scan的代价。
从2个计划可以推算出,nested loop +INDEX UNIQUE SCAN+ INDEX Full SCAN+ sort < hash loop+table full scan+table skip scan
但是事实上很慢,说明ORACLE错了,错在哪里?因为ORACLE无法知道要得到多少行.
楼主是否可以告诉我们这个SQL得到多少行,我认为行会比较多。
是否有柱状图,没有的话,建立收集。
回复
使用道具
举报
千问
|
2010-1-4 13:39:56
|
显示全部楼层
1)说明下SQL中用到的这3张表的大小:
ORDERINFOSYNCINSTANCE
8GB
ORDERINFO
7GB
CUSTOMERORDERMEMBERASSOC 150MB
to tom_fans :
2) 这个SQL 大部分时间只返回1条;但是也有返回2条以上的时候,不过很少时候。所以才加了rownum。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
左眼眶周围红肿,眼眶下面红肿较为严重
2
身上有白癜风是怎么治疗好啊?
3
短小而精悍的相声台词
4
两周岁的小宝宝一天内最多吃几块鱼肝油
5
孩子5岁,今早起床发现上嘴唇突然肿了
6
老年人患上白斑的原因是什么?
7
女友12月19日月经没了,那么...
8
请问医生泌乳素高是不是很严重
9
儿子38周剖腹产,7斤
10
我家宝宝六周岁,七月二十七日打完百破应该在八月二十
11
左侧后腰疼痛,现以牵引右侧
12
吃了一片阿司匹林肠溶片
13
今日入伏夏季晚上失眠该怎么办呢
14
反复发烧,打了一个星期针
15
小孩子白癜风的症状是有哪些?
16
治好手臂上白殿风要多少钱?
17
我的小宝贝手上有白癜风,怎么办?
18
嘴唇上有白斑的白癜风患者能吃辣的吗
19
请问革命根据地法律制度是指哪一年到哪一年制定的法律?
20
微晶磨削效果怎么样,
21
皮肤太松弛怎么办,如何能恢复紧致
22
左眼散光100近视450右眼散光75近视600我的
23
体检做心电图结果显示心室预激这种是什么原因导致
24
寻仙法师可以用巨型山蛙作为骑宠吗
25
我牙疼了几天,一开始吃了一些牛黄甲硝唑跟布诺芬
26
为什么我月经来了一次后过了一个月才来
27
如何预防女性白斑扩散?
28
白癜风为什么要分类而治
29
强直性脊柱炎日常可以锻炼吗怎么进行
30
我肚子里面长了个小豆豆
31
我现在左边扁桃腺已经发炎了而且已经溃疡有一个白色的
32
很小就有了白癜风注意什么治疗啊?
33
患有盆腔结缔组织炎会出现疼痛感吗
34
求胡彦斌《宣言》歌词~
35
我是双侧输卵管轻度积水
36
我这个伤到关节面了吗
37
孕17周,耳洞轻微发炎
38
早期白癜风,平时需要多注意什么?怎么办
39
我是一名大四的女孩,23岁
40
我就是早上下班膝盖有点酸痛
41
白殿风会出现什么危害呢?
42
做近视手术前多长时间不能戴隐形
43
这个句子的问题 i found sth on sale
44
前几天吃辣的多了,嘴里长口腔溃疡
45
身上很多地方都有白癜风,注意哪些饮食呢?
46
求这张图的作者!!!!~~~
47
白癜风患者在夏季能吃海鲜吗
48
[PSP游戏]战火兄弟连:登陆日
49
宝宝一岁一个月了现在还是母乳喂养
50
吃东西消化慢且几天没大便吃哪些药现在在吃奥美拉唑本
51
我和男朋友接吻时他老摸我的乳房还脱我的衣服他把我内
52
今天早上9点半左右,我没吃早点
53
男友有白癜风,日常生活中需注意什么?
54
请问大腿膝盖右侧有一块地方的骨头按下去会疼不碰它没
55
14末次月经,27.30有同房
56
请问有哪些著名的武侠小说家?
57
白癜风患者喝小米粥有哪些好处?
58
购买笔记本
59
胃不好,海带吃上怎么不消化
60
夏季白癜风患者洗澡注意什么?
61
谁能帮我翻译一下这两张简谱!!!
62
重装系统后d盘数据丢失了很多,但是D盘的空间还是显示的是以前那么多,怎么能找回我的东西啊??
63
哪些食物白殿风患者要远离呢?
64
请问我这个脸颊过敏情况是激素脸吗
65
强直性脊柱炎的治疗应该怎么用药?
66
怎样才会导致有滴虫性阴道炎
67
一周前用拉直的回形针掏了耳朵
68
气虚体质的白癜风患者可以吃什么
69
我身上是不是过米了是痒疼痒疼的
70
腿上有白癜风,去哪治疗比较好?
71
请问紧急避孕药有没有对身体副作用吗
72
孕妇34周,今天查了个血常规
73
检查的乙肝二对半结果
74
白癜风患者治疗白癜风要注意什么
75
前几日体检显示多项异常
76
多囊卵巢引起的月经量少
77
母亲有白癜风,我目前没有,该怎么预防?
78
最近心情不好。脾气不好
79
排卵期和男朋友同房,差不多一分钟就射了
80
购买诺基亚N81 全面性试机
81
2018浙江温州哪里接种Ⅰ型肾综合征出血热疫苗
82
员工故意不休年休假,想到年底让公司赔偿3倍工资,如何解决?
83
09NBA全明星标志
84
2018年6月28日手肘摔骨折(较严重)
85
母亲有白癜风,饮食上需注意哪些?
86
我的手上长了一个刺猴
87
强直性脊柱炎要看什么科?
88
眼角有白斑是该怎么治疗啊?
89
中国移动被换成仅限SOS
90
白癜风会遗传吗?我祖母有白癜风。
91
早期白癜风会变成晚期的吗?
92
vista 远程桌面怎样连接到xp
93
手肘干活就疼痛无力,拿不起重物
94
为什么我特别不容易感冒
95
我经常头晕,春天和夏天比较频繁
96
感冒了鼻腔内有痰吹不出来就在鼻腔内只能从口腔内吐出
97
妇洁舒洗液怎么清洗,说明书上面说一天洗两次
98
股骨头坏死在短期内该怎么治疗呢?
99
遗传吧五六岁做过手术