免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1968 | 回复: 3
打印 上一主题 下一主题

询问解释计划问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-20 10:30 |只看该作者 |倒序浏览
很奇怪问题,oem检查语句是full扫描,但set autot on检查解释计划却走索引的。问下大家碰到过吗?
oem:
SELECT STATEMENT 0

4
825.539 248,203 2,979 14,815,984,640 247,738
HASH GROUP BY 1

3
825.539 248,203 2,979 14,815,984,640 247,738
FILTER 2

2






TABLE ACCESS FULL 3 YQM.TRACE_DATA TABLE 1
825.539 247,953 2,976 14,756,190,208 247,490


selectto_char(tracedata0_.RECEIVE_DATE,'yyyy-MM-dd')ascol_0_0_,tracedata0_.CONTENT_TYPEascol_1_0_,count(*)ascol_2_0_
from TRACE_DATAtracedata0_
where1=1andtracedata0_.RECEIVE_DATE>=:1andtracedata0_.RECEIVE_DATE<:2groupbytracedata0_.CONTENT_TYPE,to_char(tracedata0_.RECEIVE_DATE,'yyyy-MM-dd')

sql下
SQL> set autot on;
SQL> select to_char(tracedata0_.RECEIVE_DATE, 'yyyy-MM-dd') as col_0_0_, tracedata0_.CONTENT_TYPE as col_1_0_, count(*) as col_2_0_
from TRACE_DATA tracedata0_
where 1=1 and tracedata0_.RECEIVE_DATE>=to_date('2010-12-18','yyyy-MM-dd')  and tracedata0_.RECEIVE_DATE<to_date('2010-12-19','yyyy-MM-dd')  group by tracedata0_.CONTENT_TYPE , to_char(tracedata0_.RECEIVE_DATE, 'yyyy-MM-dd')  2    3  ;
俞伟(35959819)  10:17:58
| Id  | Operation          | Name              | Rows  | Bytes |TempSpc| Cost (%C
PU)| Time     |

--------------------------------------------------------------------------------
---------------

|   0 | SELECT STATEMENT  |                      | 51097 |  1197K|       |  5649
(1)| 00:01:08 |

|   1 |  HASH GROUP BY          |                      | 51097 |  1197K|    19M|  5649
(1)| 00:01:08 |

|*  2 |   INDEX RANGE SCAN| IDX_RECED_CONTENT |   630K|    14M|       |  3848
(1)| 00:00:47 |

--------------------------------------------------------------------------------
---------------


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

   2 - access("TRACEDATA0_"."RECEIVE_DATE">=TO_DATE(' 2010-12-18 00:00:00',
              'syyyy-mm-dd hh24:mi:ss') AND "TRACEDATA0_"."RECEIVE_DATE"<TO_DATE
(' 2010-12-19

              00:00:00', 'syyyy-mm-dd hh24:mi:ss'))


统计信息
----------------------------------------------------------
          8  recursive calls
          0  db block gets
       6195  consistent gets
          0  physical reads
          0  redo size
        804  bytes sent via SQL*Net to client
        520  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          3  rows processed
有人碰到过吗?oem解释计划和set autot on,显示不一致,哪个正确?
俞伟(35959819)  10:24:23
我做了索引IDX_RECED_CONTENT(RECEIVE_DATE, CONTENT_TYPE),有啥更好优化方法?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2010-12-20 20:00 |只看该作者
帮顶。

论坛徽章:
0
3 [报告]
发表于 2010-12-22 15:38 |只看该作者
回复 1# sainker


set autot on  在使用绑定变量的情况下不一定准确。

可以用 dbms_system / dbms_monitor 包 Trace session 或者 alter session set sql_trace=true;

生成 trace file ,再 tkprof trace_file 来得到执行计划。

论坛徽章:
3
CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43
4 [报告]
发表于 2010-12-23 11:12 |只看该作者
楼主没有说明相关背景环境,所以不太好说!

一般来说  set autot traceonly 还是比较靠谱的

oem做点简单管理工作还行!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP