查看: 3264|回复: 14

这个语句还能怎么优化?

[复制链接]
论坛徽章:
15
数据库板块每日发贴之星
日期:2008-06-30 01:01:54奥运会纪念徽章:羽毛球
日期:2012-06-26 15:21:24ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26数据库板块每日发贴之星
日期:2011-07-15 01:01:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:加纳
日期:2010-07-27 08:59:132010年世界杯参赛球队:智利
日期:2010-07-14 16:06:302010年世界杯参赛球队:斯洛伐克
日期:2010-07-10 02:35:492010年世界杯参赛球队:英格兰
日期:2010-07-09 18:54:212010年世界杯参赛球队:瑞士
日期:2010-01-22 13:33:24
发表于 2010-9-19 11:40 | 显示全部楼层 |阅读模式
27429  consistent gets 能不能再减少点?



11:37:35 SQL> select so_saleorder_b.corder_bid
11:37:35   2    from so_saleorder_b, ic_general_b
11:37:35   3   where so_saleorder_b.corder_bid = ic_general_b.csourcebillbid
11:37:35   4     and ic_general_b.dr = 0
11:37:35   5     and so_saleorder_b.dr = 0
11:37:35   6     and (so_saleorder_b.corder_bid in ('1120A8100000000JW7K5'))
11:37:35   7     and nvl(so_saleorder_b.ntaxnetprice, 0) !=
11:37:35   8         nvl(ic_general_b.ntaxprice, 0);

958 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2946261710

--------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name              | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |                   | 10647 |   519K| 10661   (1)| 00:02:08 |
|   1 |  NESTED LOOPS                |                   | 10647 |   519K| 10661   (1)| 00:02:08 |
|*  2 |   TABLE ACCESS BY INDEX ROWID| SO_SALEORDER_B    |     1 |    28 |     1   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN         | PK_SO_SALEORDER_B |     1 |       |     1   (0)| 00:00:01 |
|*  4 |   TABLE ACCESS BY INDEX ROWID| IC_GENERAL_B      | 10647 |   228K| 10660   (1)| 00:02:08 |
|*  5 |    INDEX RANGE SCAN          | I_IC_GENERAL_B_3  | 48325 |       |    88   (0)| 00:00:02 |
--------------------------------------------------------------------------------------------------

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

   2 - filter("SO_SALEORDER_B"."DR"=0)
   3 - access("SO_SALEORDER_B"."CORDER_BID"='1120A8100000000JW7K5')
   4 - filter("IC_GENERAL_B"."DR"=0 AND NVL("SO_SALEORDER_B"."NTAXNETPRICE",0)<>NVL("IC_GE
              NERAL_B"."NTAXPRICE",0))
   5 - access("IC_GENERAL_B"."CSOURCEBILLBID"='1120A8100000000JW7K5')


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
      27429  consistent gets
          0  physical reads
       1644  redo size
      27033  bytes sent via SQL*Net to client
       1043  bytes received via SQL*Net from client
         65  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
        958  rows processed

11:37:38 SQL>
认证徽章
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
发表于 2010-9-19 14:17 | 显示全部楼层
从执行计划看ic_general_b此表数据量不小!

使用道具 举报

回复
论坛徽章:
15
数据库板块每日发贴之星
日期:2008-06-30 01:01:54奥运会纪念徽章:羽毛球
日期:2012-06-26 15:21:24ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26数据库板块每日发贴之星
日期:2011-07-15 01:01:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:加纳
日期:2010-07-27 08:59:132010年世界杯参赛球队:智利
日期:2010-07-14 16:06:302010年世界杯参赛球队:斯洛伐克
日期:2010-07-10 02:35:492010年世界杯参赛球队:英格兰
日期:2010-07-09 18:54:212010年世界杯参赛球队:瑞士
日期:2010-01-22 13:33:24
 楼主| 发表于 2010-9-19 14:23 | 显示全部楼层
原帖由 yyp2009 于 2010-9-19 14:17 发表
从执行计划看ic_general_b此表数据量不小!



此表有105万条数据。

使用道具 举报

回复
论坛徽章:
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
发表于 2010-9-19 14:37 | 显示全部楼层
select count(*) from ic_general_b where csourcebillbid='1120A8100000000JW7K5' 返回多少行

使用道具 举报

回复
论坛徽章:
13
2008新春纪念徽章
日期:2008-02-13 12:43:032011新春纪念徽章
日期:2011-02-18 11:43:34ITPUB9周年纪念徽章
日期:2010-10-08 09:32:262010新春纪念徽章
日期:2010-03-01 11:20:522010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:洪都拉斯
日期:2009-12-27 20:17:37祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:马
日期:2009-07-21 16:48:12生肖徽章2007版:猪
日期:2009-06-03 22:21:29生肖徽章2007版:马
日期:2009-05-17 18:21:19
发表于 2010-9-19 14:40 | 显示全部楼层
IC_GENERAL_B这个表上面有三个子段被用到了,如果可以用这三个或者两个字段来减少返回得行数,可以减少逻辑读。
注意恐怕需要用函数索引,因为有个NVL表达式

使用道具 举报

回复
论坛徽章:
15
数据库板块每日发贴之星
日期:2008-06-30 01:01:54奥运会纪念徽章:羽毛球
日期:2012-06-26 15:21:24ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26数据库板块每日发贴之星
日期:2011-07-15 01:01:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:加纳
日期:2010-07-27 08:59:132010年世界杯参赛球队:智利
日期:2010-07-14 16:06:302010年世界杯参赛球队:斯洛伐克
日期:2010-07-10 02:35:492010年世界杯参赛球队:英格兰
日期:2010-07-09 18:54:212010年世界杯参赛球队:瑞士
日期:2010-01-22 13:33:24
 楼主| 发表于 2010-9-19 15:02 | 显示全部楼层
原帖由 棉花糖ONE 于 2010-9-19 14:37 发表
select count(*) from ic_general_b where csourcebillbid='1120A8100000000JW7K5' 返回多少行


7万多

使用道具 举报

回复
论坛徽章:
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
发表于 2010-9-19 15:03 | 显示全部楼层
你这1笔订单怎么对应几w个出(入)库啊,业务是不是有问题啊

使用道具 举报

回复
论坛徽章:
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
发表于 2010-9-19 15:09 | 显示全部楼层
select count(*) from ic_general_b where csourcebillbid='1120A8100000000JW7K5'  and dr=0多少

使用道具 举报

回复
论坛徽章:
32
奥运会纪念徽章:摔跤
日期:2012-08-23 11:03:05青年奥林匹克运动会-击剑
日期:2014-09-19 10:58:152014年世界杯参赛球队:巴西
日期:2014-07-07 12:19:232014年世界杯参赛球队: 瑞士
日期:2014-05-19 12:18:36马上有钱
日期:2014-04-08 12:12:232014年新春福章
日期:2014-04-04 14:20:47马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09红旗
日期:2014-02-14 15:15:55优秀写手
日期:2013-12-18 09:29:16
发表于 2010-9-19 15:27 | 显示全部楼层
原帖由 棉花糖ONE 于 2010-9-19 15:09 发表
select count(*) from ic_general_b where csourcebillbid='1120A8100000000JW7K5'  and dr=0多少



然后原sql不要最后一个条件有多少。

两个表的行数也说一下。



这个sql应该是可以优化的

使用道具 举报

回复
论坛徽章:
15
数据库板块每日发贴之星
日期:2008-06-30 01:01:54奥运会纪念徽章:羽毛球
日期:2012-06-26 15:21:24ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26数据库板块每日发贴之星
日期:2011-07-15 01:01:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:加纳
日期:2010-07-27 08:59:132010年世界杯参赛球队:智利
日期:2010-07-14 16:06:302010年世界杯参赛球队:斯洛伐克
日期:2010-07-10 02:35:492010年世界杯参赛球队:英格兰
日期:2010-07-09 18:54:212010年世界杯参赛球队:瑞士
日期:2010-01-22 13:33:24
 楼主| 发表于 2010-9-19 15:43 | 显示全部楼层
原帖由 棉花糖ONE 于 2010-9-19 15:03 发表
你这1笔订单怎么对应几w个出(入)库啊,业务是不是有问题啊



绝大部分都是dr=1

使用道具 举报

回复

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

本版积分规则 发表回复

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号
  
快速回复 返回顶部 返回列表