查看: 6171|回复: 45

[性能调整] 这个语句如何优化比较好啊?

[复制链接]
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:03ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24
发表于 2008-9-8 22:37 | 显示全部楼层 |阅读模式
大家帮忙看看下面的语句如何优化比较好:
select * from
(select T0.NSID as ColAlias1, T0.ID as ColAlias2, T0.VERSION as ColAlias3, T0.NAME as ColAlias4, T0.FIRSTNAME as ColAlias5, T0.BIRTHDATE as ColAlias6, T0.ISCUSTOMER as ColAlias7, T0.ISBROKER as ColAlias8, T0.ISINSURABLE as ColAlias9, T0.ISHEALTHCAREPROVIDER as ColAlias10, T0.SSN as ColAlias11
from AWFACTOR T0
where (T0.H_ISKILLED = 0)
and ( (T0.H_CLID=218108948) or (T0.H_CLID=218111885))
Order By T0.NAME, T0.FIRSTNAME)
where ROWNUM <= 20;

用EM做了个Snapshot然后ADDM,Oracle说这个语句占用了大量的物理内存,分页占用了大量的虚拟内存

查了一下确实是AWFACTOR表有50w行数据,约束条件后的结果集也接近50w行,但是要只取出前20行来,有没有一个办法直接取出前20行,而不是先将全部结果集放入buffer cache,再取出前20行啊?????

谢谢
论坛徽章:
136
ITPUB年度最佳技术回答奖
日期:2010-06-12 13:17:14现代
日期:2013-10-02 14:53:59路虎
日期:2013-11-22 12:26:182014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
发表于 2008-9-8 22:47 | 显示全部楼层
把执行计划帖出来,照你的描述,那应该走T0.NAME, T0.FIRSTNAME 这2个的组合索引

使用道具 举报

回复
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:03ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2008-9-8 23:11 | 显示全部楼层
哎丫,这下麻烦了,我改了个参数shutdown了DB,然后启动不起来了。。。。。。。。

windows 2003 server,从服务中也启动不起来了,说是:could not start the OracleService。。。 on Local Computer
Error 1067:The process terminated unexpected

但是刚才shutdown的时候没出现任何错误啊。。。。。。。

求救求救。。。。。。。

使用道具 举报

回复
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:03ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2008-9-8 23:13 | 显示全部楼层
Oracle 10g R2

Windows 2003 server 64bits

listener都正常

使用道具 举报

回复
论坛徽章:
136
ITPUB年度最佳技术回答奖
日期:2010-06-12 13:17:14现代
日期:2013-10-02 14:53:59路虎
日期:2013-11-22 12:26:182014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
发表于 2008-9-8 23:14 | 显示全部楼层
先把oracle相关的进程杀了看看

使用道具 举报

回复
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:03ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2008-9-8 23:24 | 显示全部楼层
我已经把此数据库相关的进程都关了啊。。。。EM什么的。我看没有别的了。。。。。

还是同样的问题啊。。。。。

使用道具 举报

回复
论坛徽章:
120
现任管理团队成员
日期:2011-05-07 01:45:08乌索普
日期:2019-02-14 23:54:04
发表于 2008-9-8 23:31 | 显示全部楼层
oradim -startup -sid xxx
的方法启动看看alert中的错误

使用道具 举报

回复
发表于 2008-9-8 23:36 | 显示全部楼层
试试楼上的

使用道具 举报

回复
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:03ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24
 楼主| 发表于 2008-9-8 23:42 | 显示全部楼层
正在重启system,等弄好了,我把执行计划贴上来

但是在我印象中没有 T0.NAME, T0.FIRSTNAME 2个的组合索引

使用道具 举报

回复
论坛徽章:
11
生肖徽章2007版:牛
日期:2008-01-02 17:35:53祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:马
日期:2009-08-09 17:28:40祖母绿
日期:2009-06-29 16:00:05生肖徽章2007版:猴
日期:2009-02-22 21:56:46授权会员
日期:2009-02-05 08:02:51数据库板块每日发贴之星
日期:2009-01-29 01:01:022009新春纪念徽章
日期:2009-01-04 14:52:28奥运会纪念徽章:皮划艇静水
日期:2008-10-24 13:20:44生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
发表于 2008-9-9 07:41 | 显示全部楼层
先看执行计划在做任何改动。

使用道具 举报

回复

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

本版积分规则 发表回复

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