问题描述
嗨,汤姆团队,
我有一个巨大的表,其中包含更多100亿条记录。该表包含6年以上的交易记录,表结构如下:
表名: FCT_TRANS
表结构:
酸varchar(20) 、TRAN_DATE日期、TRAN_TYPE varchar(10) 、TRAN_SUB_TYPE varchar2(10) 、PART_TRAN_TYPE varchar2(10) 、BRCH_ID varchar2(10) 、TRAN_RMKS varchar2(100) 、TRANID编号、TRAN_AMT编号等。
索引列: 综合索引 (ACID,TRAN_DATE),正常索引-TRAN_TYPE。
还有一张表拥有大约2500万条记录,并且是系统中实时存在的accouts主表。
表名: DIM_ACCT
表结构:
ACID varchar(20) 、ACT_OPN_DATE日期、SCHM_TYPE varchar(10) 、SCHM_CODE varchar2(10) 、ACT_NAME varchar2(50) 、BRCH_ID varchar2(10) 等。
索引柱: 酸
现在两个表都是系统表,ACID是两个表之间的映射键。
我想为过去两年的交易类型,子类型,SCHM_TYPE Wise交易计数和交易金额提取每月摘要。
示例操作格式:
月,TRAN_TYPE,TRAN_SUB_TYPE,part _ TRAN_TYPE,schm _ type,sum_of _ tran_amt,count_of _ transacting_acts,count_of _ uniq_transacting_acts
对于这一要求,我们必须根据ACID将这两个表格合并,并必须对过去两年进行每月总结。为需求执行的查询如下:
当前查询执行:
选择to_char(a.tran_date,'mony') TRAN_DT,
a.TRAN_TYPE,a.TRAN_SUB_TYPE,a.PART_TRAN_TYPE,b.SCHM_TYPE,
总和 (a.TRAN_AMT) 总和 _ TRAN_AMT,
交易计数 (acid) 计数,
计数 (不同的a.acid) 计数 _ 单位 _ 交易 _ 行为
来自FCT_TRANS A,DIM_ACCT B
其中a.酸 = b.酸
和 “01-11-2016” 和 “30-11-2016” 之间的tran_date
按to_char(a.tran_date,'mony') 分组,a.TRAN_TYPE,a.TRAN_SUB_TYPE,a.PART_TRAN_TYPE,b.SCHM_TYPE;
我们已经尝试通过使用简单的联接和组by来提取这些数据,但它只需要6-7个小时以上的月。因此,完整的数据提取大约需要6-7天。
请帮助尽早提取此类数据需求的优化过程。
另外,请提供一些示例脚本和优化技巧,以解决我是Oracle技术的新手并想学习的要求。
我有一个巨大的表,其中包含更多100亿条记录。该表包含6年以上的交易记录,表结构如下:
表名: FCT_TRANS
表结构:
酸varchar(20) 、TRAN_DATE日期、TRAN_TYPE varchar(10) 、TRAN_SUB_TYPE varchar2(10) 、PART_TRAN_TYPE varchar2(10) 、BRCH_ID varchar2(10) 、TRAN_RMKS varchar2(100) 、TRANID编号、TRAN_AMT编号等。
索引列: 综合索引 (ACID,TRAN_DATE),正常索引-TRAN_TYPE。
还有一张表拥有大约2500万条记录,并且是系统中实时存在的accouts主表。
表名: DIM_ACCT
表结构:
ACID varchar(20) 、ACT_OPN_DATE日期、SCHM_TYPE varchar(10) 、SCHM_CODE varchar2(10) 、ACT_NAME varchar2(50) 、BRCH_ID varchar2(10) 等。
索引柱: 酸
现在两个表都是系统表,ACID是两个表之间的映射键。
我想为过去两年的交易类型,子类型,SCHM_TYPE Wise交易计数和交易金额提取每月摘要。
示例操作格式:
月,TRAN_TYPE,TRAN_SUB_TYPE,part _ TRAN_TYPE,schm _ type,sum_of _ tran_amt,count_of _ transacting_acts,count_of _ uniq_transacting_acts
对于这一要求,我们必须根据ACID将这两个表格合并,并必须对过去两年进行每月总结。为需求执行的查询如下:
当前查询执行:
选择to_char(a.tran_date,'mony') TRAN_DT,
a.TRAN_TYPE,a.TRAN_SUB_TYPE,a.PART_TRAN_TYPE,b.SCHM_TYPE,
总和 (a.TRAN_AMT) 总和 _ TRAN_AMT,
交易计数 (acid) 计数,
计数 (不同的a.acid) 计数 _ 单位 _ 交易 _ 行为
来自FCT_TRANS A,DIM_ACCT B
其中a.酸 = b.酸
和 “01-11-2016” 和 “30-11-2016” 之间的tran_date
按to_char(a.tran_date,'mony') 分组,a.TRAN_TYPE,a.TRAN_SUB_TYPE,a.PART_TRAN_TYPE,b.SCHM_TYPE;
我们已经尝试通过使用简单的联接和组by来提取这些数据,但它只需要6-7个小时以上的月。因此,完整的数据提取大约需要6-7天。
请帮助尽早提取此类数据需求的优化过程。
另外,请提供一些示例脚本和优化技巧,以解决我是Oracle技术的新手并想学习的要求。
专家解答
选项:
1) 在tran_date上对表进行分区
显然需要很大程度的测试,因为对您现有的应用程序代码有潜在的影响
2) 预先准备的摘要
创建该摘要数据的实体化视图,以便您的查询可以访问较小的数据集。
3) 马力更大
查看使用并行查询以更快地获得答案。
4) 数据较少
查看压缩部分或全部数据以使查询源数据集更小的机会。
1) 在tran_date上对表进行分区
显然需要很大程度的测试,因为对您现有的应用程序代码有潜在的影响
2) 预先准备的摘要
创建该摘要数据的实体化视图,以便您的查询可以访问较小的数据集。
3) 马力更大
查看使用并行查询以更快地获得答案。
4) 数据较少
查看压缩部分或全部数据以使查询源数据集更小的机会。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
507次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
487次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
406次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
399次阅读
2025-04-08 09:12:48
Oracle SQL 执行计划分析与优化指南
Digital Observer
378次阅读
2025-04-01 11:08:44
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
368次阅读
2025-04-18 14:18:38
Oracle 19c RAC更换IP实战,运维必看!
szrsu
345次阅读
2025-04-08 23:57:08
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
316次阅读
2025-04-15 14:48:05
oracle定时任务常用攻略
virvle
316次阅读
2025-03-25 16:05:19
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
312次阅读
2025-03-24 09:42:53