楼主: eygle

[精华] 一次分析的全过程,和大家交流!

[复制链接]
论坛徽章:
0
31#
发表于 2003-7-9 16:05 | 只看该作者
不好意思, 我想问一下是在哪里做的分析呀?

使用道具 举报

回复
论坛徽章:
0
32#
发表于 2003-8-22 10:56 | 只看该作者
最初由 忍者神龟 发布
[B]这个china oracle user group在哪里?
cp师兄
[/B]




http://www.*****.org/bin/ut/forum_show.cgi

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34祖国60周年纪念徽章
日期:2009-10-09 08:28:00
33#
发表于 2003-8-22 14:44 | 只看该作者
但是oracle 公司的专家建议不要用analyze 分析表。

使用道具 举报

回复
论坛徽章:
0
34#
发表于 2003-8-27 14:05 | 只看该作者
分析的思路比较好有借鉴之处

使用道具 举报

回复
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:42:50
35#
发表于 2003-9-26 16:47 | 只看该作者
好,这里高手真多

使用道具 举报

回复
论坛徽章:
0
36#
发表于 2003-9-26 22:00 | 只看该作者
这个例子好像并不能说明什么问题。
从第一个分析结果来判断,就应该在sp_trans表的vendor_id上创建索引。而真正起作用的也正是这个索引。而不在于是RBO还是CBO。

使用道具 举报

回复
论坛徽章:
0
37#
发表于 2004-3-16 16:14 | 只看该作者
哎,看不懂,还需要学习呀!

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
38#
 楼主| 发表于 2004-3-16 16:41 | 只看该作者
最初由 halbert 发布
[B]但是oracle 公司的专家建议不要用analyze 分析表。 [/B]


几年前的建议 或是 早期版本的建议了吧

从Oracle9i开始,Oracle的CBO已经值得应用

从Oracle10g开始,Oracle缺省的优化器应经变成了ALL_ROWS
而且Oracle不再对RBO提供升级及修正

CBO是必经之路了。


参考:

http://www.itpub.net/showthread.php?s=&threadid=200312

-Eygle

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41奥迪
日期:2013-08-26 14:11:54
39#
发表于 2004-8-3 09:59 | 只看该作者
最初由 eygle 发布
[B]然而这不是最快的,这是RBO

我们修改optimizer_index_cost_adj参数,然后奇迹出现了

optimizer_index_cost_adj告诉CBO倾向于使用索引扫描而不是全表扫描的程度,该参数缺省值是100,就是不左右CBO的判断


SQL> alter session set optimizer_index_cost_adj=30
  2 /

会话已更改。

已用时间: 00: 00: 00.20

SQL> SELECT "SP_TRANS"."TRANS_NO",
  2 "SP_TRANS_SUB"."ITEM_CODE",
  3 "SP_ITEM"."ITEM_NAME",
  4 "SP_ITEM"."CHART_ID",
  5 "SP_ITEM"."SPECIFICATION",
  6 "SP_TRANS_SUB"."COUNTRY",
  7 "SP_TRANS_SUB"."QTY",
  8 "SP_TRANS_SUB"."PRICE",
  9 "SP_TRANS"."VENDOR_CODE",
10 "SP_TRANS"."PAY_MODE",
11 NVL("SP_TRANS_SUB"."PAY_QTY",0),
12 0 as PAY_THIS
13 FROM "SP_TRANS",
14 "SP_ITEM",
15 "SP_TRANS_SUB"
16 WHERE ( "SP_TRANS_SUB"."TRANS_NO" = "SP_TRANS"."TRANS_NO" ) and
17 ( "SP_ITEM"."ITEM_CODE" = "SP_TRANS_SUB"."ITEM_CODE" ) and
18 ( ( "SP_TRANS"."VENDOR_CODE" = '20011021023') )
19 /

已选择8行。

已用时间: 00: 00: 00.11

Execution Plan
----------------------------------------------------------
   0 SELECT STATEMENT Optimizer=CHOOSE (Cost=658 Card=1095 Bytes= 102930)

   1 0 NESTED LOOPS (Cost=658 Card=1095 Bytes=102930)
   2 1 NESTED LOOPS (Cost=329 Card=1095 Bytes=61320)
   3 2 TABLE ACCESS (BY INDEX ROWID) OF 'SP_TRANS' (Cost=1 Card=273 Bytes=7098)
   4 3 INDEX (RANGE SCAN) OF 'IDX_VENDOR' (NON-UNIQUE) (Cost=1 Card=273)
   5 2 TABLE ACCESS (BY INDEX ROWID) OF 'SP_TRANS_SUB' (Cost= 2 Card=135502 Bytes=4065060)
   6 5 INDEX (RANGE SCAN) OF 'PK_SP_TRANS_SUB' (UNIQUE) (Cost=3 Card=135502)
   7 1 TABLE ACCESS (BY INDEX ROWID) OF 'SP_ITEM' (Cost=1 Card=29547 Bytes=1122786)
   8 7 INDEX (UNIQUE SCAN) OF 'PK_SP_ITEM' (UNIQUE)

Statistics
----------------------------------------------------------
          0 recursive calls
          0 db block gets
         49 consistent gets
          0 physical reads
          0 redo size
       1809 bytes sent via SQL*Net to client
        426 bytes received via SQL*Net from client
          2 SQL*Net roundtrips to/from client
          0 sorts (memory)
          0 sorts (disk)
          8 rows processed

SQL> [/B]

eygle:
      从上面可以看出修改optimizer_index_cost_adj参数得到的执行计划与/*+rule*/是一样的.那么就奇怪了?难道一样的执行计划,执行的代价和速度还不一样吗? 我觉得应该一样.这里的不一样只是偶然的.

使用道具 举报

回复
论坛徽章:
117
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主7段
日期:2012-05-15 15:24:11ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32紫蛋头
日期:2013-03-04 17:00:07优秀写手
日期:2013-12-18 09:29:09
40#
 楼主| 发表于 2004-8-3 10:06 | 只看该作者
最初由 zf_wu 发布
[B]
eygle:
      从上面可以看出修改optimizer_index_cost_adj参数得到的执行计划与/*+rule*/是一样的.那么就奇怪了?难道一样的执行计划,执行的代价和速度还不一样吗? 我觉得应该一样.这里的不一样只是偶然的. [/B]



不一样的,你仔细看看

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表