楼主: mypengchen2000

[精华] 存储过程的效率问题!!(今晚在线等)

[复制链接]
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
101#
发表于 2003-7-4 09:56 | 只看该作者
唉唉唉 ~~~~
本来想开个玩笑.....可惜都不接招....
---------------------------------------------------------------------------------

1 Oracle何时使用"cost"和何时使用"rule"

假设optimizer_mode = choose
  oracle将根据统计资料的存在来评估使用"cost"还是"rule"
  如果统计资料存在 则使用'cost'否则 使用'rule'
这里边有一个重大的问题存在 只要有任何表[/COLOR] 或索引包含统计资料,oracle就假定你希望使用'cost',并使用内部统计资料,注意!!!!是任何表......也就是表示你如果对某个表不小心进行了统计,那么有几十或者更多的sql的执行计划被你修改了...

2 使用索引的问题
   对于使用索引,如果被访问的块区少于全表扫描的,索引有意,否则
全表扫描更好..
通常认为 一次访问数据 < 已排序表数据* 40%
                  或                    < 未排序表数据* 12%
时  使用索引比不使用索引好

使用道具 举报

回复
论坛徽章:
0
102#
 楼主| 发表于 2003-7-4 10:39 | 只看该作者
对于这句话,“只要有任何表 或索引包含统计资料,oracle就假定你希望使用'cost',并使用内部统计资料,注意!!!!是任何表......也就是表示你如果对某个表不小心进行了统计,那么有几十或者更多的sql的执行计划被你修改了”,我认为不正确!

你的意思是不是,在这个库上只要有一个表被analyze过,那这个库上其他的表也会和别分析过的表一样在同等情况下来使用索引???

我这里有一个例子:
我在我上面做的实验的基础上,我的test表显然是被analyze过,在test表同样的用户下,我还有很多的表,随便我挑了一个表,select colb from B group by colb ,其中colb为非空,那为什么我看这个语句,他就没有用上索引呢???
所以,我认为是,只有被analyze过的表才有效,并不是只要有一个表被analyze过,那其他的表的执行计划都改了!!

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
103#
发表于 2003-7-4 12:37 | 只看该作者

在一个SQL语句中

只要该SQL所涉及到的表中 有任何一个 被分析过,则使用cost
oracle会假定没有分析的表给一个默认的statistics
比如 rows 假定为 5000

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
104#
发表于 2003-7-4 13:44 | 只看该作者
/*_-------------------------------------------

只要该SQL所涉及到的表中 有任何一个 被分析过,则使用cost
oracle会假定没有分析的表给一个默认的statistics
比如 rows 假定为 5000

--------------------------------------------------------------------------------*/

这样就可能造成统计数据和实际情况出现不一致,从而使oracle优化器选择了有问题(或者是不恰当)的执行计划了

使用道具 举报

回复
论坛徽章:
0
105#
发表于 2003-7-4 14:08 | 只看该作者

可否讲解详细些?

最初由 woodlong 发布
[B]/*_-------------------------------------------

只要该SQL所涉及到的表中 有任何一个 被分析过,则使用cost
oracle会假定没有分析的表给一个默认的statistics
比如 rows 假定为 5000

--------------------------------------------------------------------------------*/

这样就可能造成统计数据和实际情况出现不一致,从而使oracle优化器选择了有问题(或者是不恰当)的执行计划了 [/B]

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
106#
发表于 2003-7-4 14:11 | 只看该作者

既然是假定的 statistics

那就可能产生 比较差 的执行计划

这还有什么疑问?

使用道具 举报

回复
论坛徽章:
0
107#
发表于 2003-7-9 15:00 | 只看该作者
3q3q!!!

使用道具 举报

回复
论坛徽章:
0
108#
发表于 2003-8-20 14:35 | 只看该作者
是不是再说,在一个系统当中,要特别小心单独分析某个表的情况?因为存在这种可能,一个偶尔的分析某一个表的动作,会给整个系统带来不可预知的问题?


那可真是要小心了!

使用道具 举报

回复
论坛徽章:
60
2007年度最佳版主
日期:2008-04-03 16:46:15现任管理团队成员
日期:2011-05-07 01:45:08双黄蛋
日期:2011-06-15 17:03:34ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
109#
发表于 2003-8-20 14:38 | 只看该作者
最初由 Ian 发布
[B]是不是再说,在一个系统当中,要特别小心单独分析某个表的情况?因为存在这种可能,一个偶尔的分析某一个表的动作,会给整个系统带来不可预知的问题?


那可真是要小心了! [/B]


单独分析某个表是个不好的习惯

使用道具 举报

回复

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

本版积分规则 发表回复

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