免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2687 | 回复: 6
打印 上一主题 下一主题

大家看看怎么这个语句怎么优化啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-05 17:38 |只看该作者 |倒序浏览
5可用积分
select to_char(e.so_region_code),
       to_char(e.so_county_code),
       to_char(e.so_nbr),
       to_char(a.phone_id),
       to_char(b.promo_id),
       to_char(b.cond_id),
       to_char(b.act_type),
       to_char(b.valid_date, 'yyyy-mm-dd hh24:mi:ss'),
       to_char(b.expire_date, 'yyyy-mm-dd hh24:mi:ss'),
       to_char(c.book_item_id),
       to_char(c.item_total / 100.00)
  from zk.cm_user        a,
       zk.cm_busi_promo              b,
       zk.cm_busi_charge_200810 c,
       xg.sys_organizations          d,                     
       zk.cm_busi_200810   e
where e.so_org_id = d.org_id
   and e.so_nbr = c.so_nbr
   and b.so_nbr = c.so_nbr
   and a.serv_id = e.serv_id
   and e.process_id <> 4
   and e.PROCESS_RESULT = 2
   and c.oper_type <> 5
   and e.so_date >= to_date('2008100100000', 'yyyymmddhh24miss')
   and e.so_date <= to_date('20081031235959', 'yyyymmddhh24miss')
   and e.so_county_code in (917)
group by e.so_region_code,
          e.so_county_code,
          e.so_nbr,
          a.phone_id,
          b.promo_id,
          b.cond_id,
          b.act_type,
          b.valid_date,
          b.expire_date,
          c.book_item_id,
          c.item_total



SELECT STATEMENT, GOAL = CHOOSE                        24000        1        154
SORT GROUP BY                        24000        1        154
  NESTED LOOPS                        23998        1        154
   NESTED LOOPS                        23996        1        134
    NESTED LOOPS                        23996        1        121
     HASH JOIN                        23994        1        74
      PARTITION LIST ALL                                       
       TABLE ACCESS FULL        ZK        CM_BUSI_CHARGE_200810        708        1492427        34325821
      PARTITION HASH ALL                                       
       TABLE ACCESS FULL        ZK        CM_BUSI_PROMO        9519        13553155        691210905
     TABLE ACCESS BY GLOBAL INDEX ROWID        ZK        CM_BUSI_200810        2        1        47
      INDEX UNIQUE SCAN        ZK        PK_CM_BUSI7_200810        1        1       
    INDEX UNIQUE SCAN        XG        PK_SYS_ORGANIZATIONS                7        91
   TABLE ACCESS BY GLOBAL INDEX ROWID        ZK        CM_USER        2        1        20
    INDEX UNIQUE SCAN        ZK        PK_CM_USER        1        1

论坛徽章:
0
2 [报告]
发表于 2008-11-07 15:44 |只看该作者
感觉很正统的写法,没有需要大改。
但你用group by为什么,有聚合吗??

[ 本帖最后由 china_yebin 于 2008-11-7 15:45 编辑 ]

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
3 [报告]
发表于 2008-11-07 16:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2008-11-13 16:43 |只看该作者
感觉有点奇怪,没看到group by之外的字段,group by干吗呢?
另外
如果数据量很大,建议不要对select出来的字段名直接 做to_char 或者其他操作
可以分2步进行。

论坛徽章:
0
5 [报告]
发表于 2008-11-13 22:49 |只看该作者
原帖由 china_yebin 于 2008-11-7 15:44 发表
感觉很正统的写法,没有需要大改。
但你用group by为什么,有聚合吗??


明显的,意图就是为了去除重复记录

论坛徽章:
0
6 [报告]
发表于 2008-11-14 14:32 |只看该作者
检查表记录,创建合适的索引,然后执行explain之后再说

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2008-11-17 16:05 |只看该作者
可以用distinct代替groupby,不知道能提高多少效率
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP