查看: 5396|回复: 28

update优化

[复制链接]
认证徽章
论坛徽章:
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
发表于 2011-1-26 11:28 | 显示全部楼层 |阅读模式
语句如下:
UPDATE xxxxx.tph a
   SET a.end_dt = '20110120'
WHERE EXISTS (SELECT 1
                 FROM xxxxx.tpk
                WHERE TRIM (asset_row_id) = a.asset_row_id)
   AND a.end_dt = '30001231'
   
   执行计划如下:
   UPDATE STATEMENT, GOAL = ALL_ROWS        2701647        1402709                1397351                        80429664423
UPDATE                                        xxxxx        tph       
  HASH JOIN RIGHT SEMI        2701647        1402709                1397351                        80429664423
   INDEX FAST FULL SCAN        5910890        3184                3126        xxxxx        IND_TRIM_MASSET_ROW_ID        866602616
   TABLE ACCESS FULL        5914955        1384566                1379415        xxxxx        tph        77328979522

其中tph的asset_row_id字段上的索引走不了。
其中tph表上的索引如下:
INDEX_NAME                     INDEX_TYPE
------------------------------ ---------------------------
IND_CACCT_ROW_ID               NORMAL
IND_STAT_NAME                  NORMAL
INDEX_AREA_ID                  NORMAL
IDX_BITMAP_PRE_ACTIVE_STATUS   BITMAP
IDX_MAIN_ASSET_END_DT          NORMAL
IDX_MAIN_ASSET_PRD_LVL4_ID     NORMAL
IDX_MAIN_HIST_ASSET_ROW_ID     NORMAL
IND_LAST_DISPLAY_AREA_ID       NORMAL
IND_TELECOM_AREA_ID            NORMAL
IND_CCUST_ID                   NORMAL
IDX_MAIN_ASSET_START_DT        NORMAL


INDEX_NAME                     COLUMN_NAME
------------------------------ --------------------------------------------------------------------------------
IDX_MAIN_ASSET_START_DT        START_DT
IND_TELECOM_AREA_ID            TELECOM_AREA_ID
IND_CCUST_ID                   CCUST_ID
IND_LAST_DISPLAY_AREA_ID       LAST_DISPLAY_AREA_ID
IDX_MAIN_HIST_ASSET_ROW_ID     ASSET_ROW_ID
IDX_MAIN_ASSET_PRD_LVL4_ID     STD_PRD_LVL4_ID
IDX_MAIN_ASSET_END_DT          END_DT
IDX_BITMAP_PRE_ACTIVE_STATUS   PRE_ACTIVE_STATUS
INDEX_AREA_ID                  AREA_ID
IND_STAT_NAME                  STAT_NAME
IND_CACCT_ROW_ID               CCUST_ROW_ID


其中tph表有 85851351条记录
认证徽章
论坛徽章:
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
发表于 2011-1-26 11:29 | 显示全部楼层
都不是分区表。

使用道具 举报

回复
论坛徽章:
47
2011新春纪念徽章
日期:2011-01-04 10:24:02奥迪
日期:2013-11-09 23:09:27保时捷
日期:2013-10-15 20:14:48阿斯顿马丁
日期:2013-10-12 09:11:59三菱
日期:2013-09-14 16:45:56雪铁龙
日期:2013-08-21 12:50:25马自达
日期:2013-08-14 12:51:35ITPUB社区千里马徽章
日期:2013-06-09 10:15:34蓝锆石
日期:2013-04-12 00:10:42劳斯莱斯
日期:2013-11-09 23:09:27
发表于 2011-1-26 11:32 | 显示全部楼层
TRIM (asset_row_id) = a.asset_row_id 会走不了索引
还有就是 xxxxx.tph 表上索引太多了,而且还有位图索引,肯定影响UPDATE的效率,

使用道具 举报

回复
认证徽章
论坛徽章:
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
发表于 2011-1-26 11:32 | 显示全部楼层
tph表的IDX_MAIN_HIST_ASSET_ROW_ID索引:

DISTINCT_KEYS CLUSTERING_FACTOR   NUM_ROWS
------------- ----------------- ----------
      5151808          83005758   83008139

tph表的IDX_MAIN_ASSET_END_DT索引:

DISTINCT_KEYS CLUSTERING_FACTOR   NUM_ROWS
------------- ----------------- ----------
          874          28999384   86047354


聚簇因子很高!

使用道具 举报

回复
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
发表于 2011-1-26 11:32 | 显示全部楼层

回复 #2 yyp2009 的帖子

end_dt 这个字段是date类型的吧?
用to_date应该就走索引了

使用道具 举报

回复
认证徽章
论坛徽章:
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
发表于 2011-1-26 11:39 | 显示全部楼层
原帖由 iori809 于 2011-1-26 11:32 发表
end_dt 这个字段是date类型的吧?
用to_date应该就走索引了


ASSET_ROW_ID            VARCHAR2(30)  Y                        
START_DT                VARCHAR2(16)  Y                        
END_DT                  VARCHAR2(16)

使用道具 举报

回复
认证徽章
论坛徽章:
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
发表于 2011-1-26 11:39 | 显示全部楼层
原帖由 iori809 于 2011-1-26 11:32 发表
end_dt 这个字段是date类型的吧?
用to_date应该就走索引了

使用道具 举报

回复
认证徽章
论坛徽章:
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
发表于 2011-1-26 11:42 | 显示全部楼层
SELECT * FROM DBA_HISTOGRAMS WHERE table_name='tph';这个太长 省略了 ,不知道是不是 CLUSTERING_FACTOR   太大了!如何处理 ? CLUSTERING_FACTOR   怎么修改的,重建索引还是怎么着?

使用道具 举报

回复
认证徽章
论坛徽章:
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
发表于 2011-1-26 11:45 | 显示全部楼层
原帖由 zhoujiongfield 于 2011-1-26 11:32 发表
TRIM (asset_row_id) = a.asset_row_id 会走不了索引
还有就是 xxxxx.tph 表上索引太多了,而且还有位图索引,肯定影响UPDATE的效率,



自学习索引的基本概念是就听说索引多了会影响dml性能,但是还是没搞清楚具体影响dml操作性能明细机制是什么就不知道了?

到底是怎么影响的?

使用道具 举报

回复
论坛徽章:
51
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22铁扇公主
日期:2012-02-21 15:03:13最佳人气徽章
日期:2012-03-13 17:39:18ITPUB季度 技术新星
日期:2012-05-22 15:10:11ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:332013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-08-12 09:34:36itpub13周年纪念徽章
日期:2014-09-28 10:55:55
发表于 2011-1-26 11:49 | 显示全部楼层

回复 #9 yyp2009 的帖子

a.end_dt = '30001231'

这个条件选择性怎么样?

使用道具 举报

回复

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

本版积分规则 发表回复

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