暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 总结巨大的表

askTom 2017-05-22
143

问题描述

嗨,汤姆团队,

我有一个巨大的表,其中包含更多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) 数据较少

查看压缩部分或全部数据以使查询源数据集更小的机会。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论