12
返回列表 发新帖
楼主: jock_liu

[原创] group by 速度很慢该怎么解决

[复制链接]
论坛徽章:
0
11#
发表于 2008-4-18 13:13 | 只看该作者
物理读很大加大PGA_TARGET试试,是动态参数

使用道具 举报

回复
论坛徽章:
33
ITPUB元老
日期:2009-03-11 15:35:03咸鸭蛋
日期:2011-11-06 22:20:25紫蛋头
日期:2011-12-27 22:15:052012新春纪念徽章
日期:2012-01-04 11:49:542014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11红宝石
日期:2014-06-03 13:13:19
12#
发表于 2008-4-18 13:30 | 只看该作者
看你的执行计划,索引选择性不高啊,表跟索引都分析了吗?

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53奥运会纪念徽章:羽毛球
日期:2008-06-23 12:00:05奥运会纪念徽章:柔道
日期:2008-07-04 09:42:36奥运会纪念徽章:皮划艇激流回旋
日期:2008-08-12 14:50:402010新春纪念徽章
日期:2010-03-01 11:19:07
13#
发表于 2008-4-18 13:45 | 只看该作者
原帖由 jock_liu 于 2008-4-18 13:03 发表
select pallet_no
from sfism4.r_wip_tracking_t
where pallet_no  'N/A' and in_station_time > sysdate-365
group by pallet_no
order by pallet_no
Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=9751 Card=83606 Byte
          s=1922938)

   1    0   SORT (GROUP BY) (Cost=9751 Card=83606 Bytes=1922938)
   2    1     TABLE ACCESS (BY INDEX ROWID) OF 'R_WIP_TRACKING_T' (Cos
          t=9061 Card=204653 Bytes=4707019)

   3    2       INDEX (RANGE SCAN) OF 'R107_TIME' (NON-UNIQUE) (Cost=5
          81 Card=35621)





Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
    2707189  consistent gets
     182834  physical reads
      96804  redo size
    3264686  bytes sent via SQL*Net to client
      98766  bytes received via SQL*Net from client
       8935  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
     134003  rows processed



试试:
1. 把索引加在 r_wip_tracking_t( in_station_time, pallet_no)的字段组合上
2. SQL改为
select distinct pallet_no
from sfism4.r_wip_tracking_t
where in_station_time > sysdate-365
把pallet_no<>'N/A'的条件放在程序端去.

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53奥运会纪念徽章:羽毛球
日期:2008-06-23 12:00:05奥运会纪念徽章:柔道
日期:2008-07-04 09:42:36奥运会纪念徽章:皮划艇激流回旋
日期:2008-08-12 14:50:402010新春纪念徽章
日期:2010-03-01 11:19:07
14#
发表于 2008-4-18 13:49 | 只看该作者
看执行计划
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=9751 Card=83606 Bytes=1922938)
   1    0   SORT (GROUP BY) (Cost=9751 Card=83606 Bytes=1922938)
   2    1     TABLE ACCESS (BY INDEX ROWID) OF 'R_WIP_TRACKING_T' (Cost=9061 Card=204653 Bytes=4707019)
   3    2       INDEX (RANGE SCAN) OF 'R107_TIME' (NON-UNIQUE) (Cost=581 Card=35621)

成本估算中占大头的不是group by的成本, 因为它的成本只有690(9751-9061=690);
而真正在成本中占大头的是TABLE ACCESS (BY INDEX ROWID), 它的成本是8480(9061-581=8480);
所以应该把优化的精力放在去掉table access这个步骤上.

使用道具 举报

回复

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

本版积分规则 发表回复

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