根据多列数据分组的最佳和最优化方法是什么?
需要执行操作的数据是400 x 1000万行或行。 我乘以十,因为我们有10个分区或10个文件,每个分区有大约400 M行
问题: 从临时表中的oracle(10列)中获取列之后 或者通过假脱机来在临时文件中。在获取的数据中,我需要按某些列进行分组并添加(求和)一些列。
选项:
查询:
select /*+ parallel (a,10) */
customer_type, customer_sub_type, charge_code, cycle,month,
sum(amount),sum(final_amount)
from htg_customer_data a
where cycle=1
and month=1
and sys_creation_date < to_date('20140131235959', yyyymmddhh24miss)
group by customer_type, customer_sub_type, charge_code, cycle, month
表按周期和月份分区,并且有10个分区。每行4亿行。以上使用的字段都没有索引。提取中不需要索引列。
答案 0 :(得分:3)
您不会提供大量信息。
通常,在数据库中执行操作比将数据移动到另一个环境要快。这有几个原因:
所有这些都适用于Oracle,它具有复杂的算法和良好的优化程序。
我会立即排除(3)因为只是从数据库中移出如此大量的数据将是一个漫长的过程。然后你必须处理一个非常大的文件来做你真正想做的事情。
很可能,(1)是最好的方法。在某些情况下,临时表可以提供额外的性能提升。