楼主: olive

如何解决不同SQL之间的性能冲突?

[复制链接]
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
31#
发表于 2002-4-29 17:42 | 只看该作者

Re: hehe

原来richto是高手高手高高高高高高手

最初由 biti_rainy 发布
[B]怎么说曹操曹操就到啊
olive你就请教richto吧
他就是sql expert 的开发者
去LECCOTECH.COM ,他可能能帮你解决问题  :) [/B]

使用道具 举报

回复
论坛徽章:
2
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33
32#
发表于 2002-4-29 10:22 | 只看该作者
我以前碰到过一个6-7个表进行连接要几分钟才出结果,
当时用一个工具来看执行计划,都不能按照
理想的路径执行.
后来我先根据各表的索引表的大小逻辑关系,
人工找出哪二个表应该最先连接,是最优的,
,然后做一个function返回这两个表上的部分数据,
最后在select a.it,a.dd,b.dd,c.f,<function_name> from a,b,c ....
效果不错.
看看对你们有没参考作用.

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
33#
发表于 2002-4-25 20:43 | 只看该作者
对表作analyze estimate statistics,应该是使用基于开销的优化,看看你的参数文件中OTIMIZER_MODE的设置,如果=CHOOSE,就会激活基于开销的查询,如果有统计数字的话ORACLE会使用它;如果=RULE,则表示限制ORACLE使用基于规则的优化,那么你要仔细察看你的WHERE 子句中索引的列的使用当然还可以=FIRST_ROWS或者=ALL_ROWS,不管怎样,如果=CHOOSE,  FIRST_ROW ,  ALL_TOWS,那么,只要查询涉及的表中至少有一个表有了统计数字,ORACLE就会使用基于开销的查询,也就是说,ORACLE在根据不同的方法来估计开销(磁盘I/O,CPU资源的数量)来选择执行计划。另外,如果要使用基于开销的查询,那么,应该保持表及其索引的统计数字是最新的。

至于你的问题,首先看一下你选择的那种优化方法,如果是基于规则的查询,需要开发人员在些SQL时注意一些基本的SQL优化的方法,比如WHERE的构造等等,然后看看相应的列上是否建立了和时的索引等等。

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
34#
发表于 2002-4-25 21:37 | 只看该作者

Re: 我的参数文件里面没有optimizer_mode

最初由 olive 发布
[B]那么默认值是什么?
另外,经我试验,上述涉及到的表中,一定要某几个都analyze后,才有性能提高,比如我现在达到28分钟的执行时间,是analyze了其中四个表,少一个都不行。那oracle到底是怎么样选择优化方案的? [/B]


刚刚不是说了么,
“不管怎样,如果=CHOOSE, FIRST_ROW , ALL_TOWS,那么,只要查询涉及的表中至少有一个表有了统计数字,ORACLE就会使用基于开销的查询”

补充一点,如果没有一个表有统计数字的话,oracle会使用基于规则的查询。

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
35#
发表于 2002-4-26 09:08 | 只看该作者

Re: 就是啊,正是因为你那样说我才有疑问

最初由 olive 发布
[B]那为什么我analyze少于四个表的时候,速度特别慢?和没有analyze的时候没有什么分别。
按照你的说法,只要有一个表有analyze,就是基于开销的啊。
按我的实验,必须要analyze四个表,速度才有突变。
谁能说说上面这个SELECT,应当怎样建立index。 [/B]




同意biti_rainy的说法

再看一遍回复中好么,
。。。。。“另外,如果要使用基于开销的查询,那么,应该保持表及其索引的统计数字是最新的。
”。。。。。。

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
36#
发表于 2002-4-28 09:49 | 只看该作者
最初由 parrotao 发布
[B]好运 [/B]


呵呵,是的,ANALYZE在使用时是该慎重的,要不回适得其反的,呵呵

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:42:50
37#
发表于 2002-4-28 09:30 | 只看该作者
这个问题我也碰到了
A表记录数目1000多万,原来建立了UNIQUE INDEX,SELECT * FROM A WHERE ....是走索引的
后面ANALYZE TABLE A COMPUTE STATISTICS FOR ALL INDEXES之后,就开始TABLE ACESS FULL了,ANALYZE TABLE DELETE STATISTICS之后,ANALYZE TABLE ESTAMITE也不行了。
加上/*+INDEX(A INDEX_NAME)*/也不行了,还是ACCESS FULL
我晕
看了PARROTAO给的连接 http://metalink.oracle.com/metal ... &p_id=84969.996
有点不知所措了,现在正在从新建立索引,巨慢无比。哎,有点不知所措了,看来以后分析也要小心再小心。

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:42:50
38#
发表于 2002-4-28 10:15 | 只看该作者
哦?还有这种问题,晕倒
oracle这个破东西,呵呵
我一直以为analyze table emp compute statistics for all indexes就一切ok了
至于estimate不过是因为表太大,分析时间过长,才采用呢

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:42:50
39#
发表于 2002-4-28 10:17 | 只看该作者
而且还有一个问题,就是estimate分析好像是有时候导致走索引有的时候也无效的
昨天晚上我清楚记得estimate了一次,结果还是table access full,今天早上又estimate一次
又开始用索引了,总之,一团糟

使用道具 举报

回复
论坛徽章:
6
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34生肖徽章2007版:鼠
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-01-04 08:33:082011新春纪念徽章
日期:2011-02-18 11:42:50
40#
发表于 2002-4-28 10:36 | 只看该作者
嗯,我觉得先analyze table compute or estimate
再analyze table compute or estimate for all indexes 就ok了

使用道具 举报

回复

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

本版积分规则 发表回复

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