我需要从另一个具有相同行号和大约230列的表中创建一个具有超过3000万行和大约250列的表。就像ETL过程一样。我使用SPSS Modeler来运行具有流程算法的流。我需要加快这个过程。
在IBM netezza中,使用SPSS Modeler中的数据库内缓存以及用于输入和输出表的const images = ['a','b','c','d','e','f'];
const rollTheDice = (arr, n) => {
const randomN = [];
while(randomN.length < n){
const randomIndex = Math.floor(Math.random()*arr.length);
randomN.push(arr[randomIndex]);
arr.splice(randomIndex, 1);
}
return randomN;
}
console.log(rollTheDice(images, 5));
函数,此过程大约需要20-25分钟。
在Oracle中,相同的过程大约需要1.5到2个小时。我无法优化代码。我尝试了很多方法,使用PARALLEL函数创建输入和输出表,尝试索引输入表,尝试分区等。
最后,我将下面的语法用于输入和输出表,但是我无法取得任何进展。
DISTRIBUTE ON HASH
答案 0 :(得分:0)
我会尝试使用哈希分区和并行处理来创建新表。 https://centroid.com/parallel-execution-and-partitioning/这里似乎是一个很好的讨论,可以帮助您开始实现它。