楼主: olive

[精华] 如何解决不同SQL之间的性能冲突?

[复制链接]
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
11#
 楼主| 发表于 2002-4-25 23:00 | 只看该作者

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

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

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33ITPUB9周年纪念徽章
日期:2010-10-08 09:32:262011新春纪念徽章
日期:2011-01-04 10:35:172011新春纪念徽章
日期:2011-02-18 11:43:35
12#
发表于 2002-4-25 23:13 | 只看该作者

Re: olive

把你的查询做成一个material view试试

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
13#
 楼主| 发表于 2002-4-26 00:22 | 只看该作者

我的数据库是734

支持material view吗?怎么做?

使用道具 举报

回复
论坛徽章:
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
14#
发表于 2002-4-26 08:24 | 只看该作者

analyze后基于cost做优化

但是基于cost也要提供了统计信息才可以啊

如果只有部分表有统计信息
这种优化模式说不定结果比单纯的cost或者rule都差

因为cost的含义只是根据统计信息来决定一种oracle认为比较优的方案(不一定是最优,也存在极少机会的差的可能)。提供部分信息……oracle怎么做cost呢?只能根据有限信息来做了

使用道具 举报

回复
论坛徽章:
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
15#
发表于 2002-4-26 09:08 | 只看该作者

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

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




同意biti_rainy的说法

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

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34数据库板块每日发贴之星
日期:2006-04-24 01:01:23
16#
发表于 2002-4-26 09:09 | 只看该作者

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

最初由 olive 发布
把analyze删掉,就恢复正常。
[/B]

如何删掉analyze呢?是把相应的表清空?谢谢!

使用道具 举报

回复
论坛徽章:
95
秀才
日期:2015-10-08 17:57:58法拉利
日期:2013-12-30 15:11:23问答徽章
日期:2013-12-26 12:24:32优秀写手
日期:2013-12-18 09:29:13本田
日期:2013-12-09 10:02:28兰博基尼
日期:2013-11-18 17:44:52宝马
日期:2013-11-06 11:34:13雪佛兰
日期:2013-11-01 18:36:15宝马
日期:2013-10-25 08:22:20路虎
日期:2014-01-20 14:09:03
17#
 楼主| 发表于 2002-4-26 09:32 | 只看该作者

那么我的问题如何解决?

谢谢各位。
我应该遵循什么样的步骤来解决我的这个具体问题?

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2002-4-26 09:51 | 只看该作者

Re: 那么我的问题如何解决?

最初由 olive 发布
[B]谢谢各位。
我应该遵循什么样的步骤来解决我的这个具体问题? [/B]

My suggestion is:
   1、create index and re-create index regularly as possible;
   2、set OPTIMIZER_MODE=RULE(rule-based) and use hint ALL_ROWS in ur SQL statement because the hint can override the value of the initialization parameter.
   3、ANALYZE the tables involved in the statement regularly.

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
19#
发表于 2002-4-26 09:52 | 只看该作者
你得问题是由于Analyze后, Cost变了,  由于Cost不准确,  一部分的SQL语句Oracle 选对了较佳的执行计划, 另一部分的SQL选错了.

你到这下个LECCO SQL Exper3.2.1中文版
http://www.leccotech.com/


针对你Report和Forms中的关键SQL各作次优化, 问题就可以解决了

把结果贴出来,让大家参考下

使用道具 举报

回复
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
20#
发表于 2002-4-26 10:18 | 只看该作者
请告诉我你的select from 的表的大小
(有几行)

使用道具 举报

回复

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

本版积分规则 发表回复

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