查看: 2799|回复: 9

sql优化的问题 full scan

[复制链接]
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
发表于 2010-8-13 11:14 | 显示全部楼层 |阅读模式
两次full scan同一个表 ,怎么能优化一下子?



SQL> select y.orderid, y.canclestate, y.reportstatus
  2                               from misnew.mis_check_data_back y,
  3                                    (select max(regdate) regdate, orderid
  4                                       from mis_check_data_back t
  5                                      group by orderid) z
  6                              where y.orderid = z.orderid
                              and y.regdate = z.regdate  7  
  8  ;

542836 rows selected.

Elapsed: 00:00:06.40

Execution Plan
----------------------------------------------------------Plan hash value: 3854739067----------------------------------------------------------------------------------------------------
| Id  | Operation            | Name                | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |                     |     1 |    42 |       |  9784   (1)| 00:01:58 |
|*  1 |  FILTER              |                     |       |       |       |        |          |
|   2 |   HASH GROUP BY      |                     |     1 |    42 |       |  9784   (1)| 00:01:58 |
|*  3 |    HASH JOIN         |                     |   530K|    21M|    12M|  9761   (1)| 00:01:58 |
|*  4 |     TABLE ACCESS FULL| MIS_CHECK_DATA_BACK |   529K|  6727K|       |  4040   (1)| 00:00:49 |
|*  5 |     TABLE ACCESS FULL| MIS_CHECK_DATA_BACK |   529K|    14M|       |  4057   (1)| 00:00:49 |
----------------------------------------------------------------------------------------------------


Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("Y"."REGDATE"=MAX("REGDATE"))
   3 - access("Y"."ORDERID"="ORDERID")
   4 - filter("ORDERID" IS NOT NULL)
   5 - filter("Y"."ORDERID" IS NOT NULL)


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      38340  consistent gets
          0  physical reads
          0  redo size
   13330332  bytes sent via SQL*Net to client
     398571  bytes received via SQL*Net from client
      36191  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
     542836  rows processed
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-8-13 12:02 | 显示全部楼层
对于每个orderid,找regdate最大的数据
使用分析函数试试,按日期排序,可以使用dense_rank,然后外层过滤下

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
 楼主| 发表于 2010-8-13 13:46 | 显示全部楼层

回复 #2 dingjun123 的帖子

哦 没用过这个 搜搜去,,,

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
发表于 2010-8-13 14:16 | 显示全部楼层


There are many ways to get the right answer!

select  orderid,
            canclestate,
            reportstatus
from
(select orderid,
            canclestate,
            reportstatus,
            regdate,
            max(regdate) over(partition by orderid) max_regdate
  from misnew.mis_check_data_back)
where regdate = max_regdate;




[ 本帖最后由 bell6248 于 2010-8-13 14:20 编辑 ]

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-8-13 14:16 | 显示全部楼层
原帖由 白河小子 于 2010-8-13 13:46 发表
哦 没用过这个 搜搜去,,,



select orderid, canclestate, reportstatus
from(
select orderid, canclestate, reportstatus,
dense_rank() over(partition by orderid order by regdate desc) rn
from misnew.mis_check_data_back
) where rn=1;

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-8-13 14:17 | 显示全部楼层
原帖由 bell6248 于 2010-8-13 14:16 发表


There are many ways to get the right answer!

select  orderid,
            canclestate,
            reportstatus
from
(select orderid,
            canclestate,
            reportstatus,
            max(regdate) over(partition by orderid) max_regdate
  from misnew.mis_check_data_back)
where regdate = max_regdate;



少了个regdate

使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
发表于 2010-8-13 14:21 | 显示全部楼层
原帖由 dingjun123 于 2010-8-13 14:17 发表

少了个regdate

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
 楼主| 发表于 2010-8-13 15:35 | 显示全部楼层

嘿嘿

谢谢 楼上各位

使用道具 举报

回复
论坛徽章:
1
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28
 楼主| 发表于 2010-8-13 15:55 | 显示全部楼层

回复 #2 dingjun123 的帖子

明白了
谢谢

使用道具 举报

回复
招聘 : 语音/视频开发
论坛徽章:
28
茶鸡蛋
日期:2013-07-24 14:00:41生肖徽章2007版:鼠
日期:2008-11-07 10:47:17ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2015-06-11 15:19:16灰彻蛋
日期:2015-06-11 15:19:16紫蛋头
日期:2015-06-11 15:19:16蜘蛛蛋
日期:2013-06-16 17:12:302014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2010-8-13 15:57 | 显示全部楼层
看看

使用道具 举报

回复

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

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