我正在使用 Oracle 数据库,我需要能够对表中的数据进行分区。我知道 Rracle 有一个 ora_hash 函数,可以将数据分区到桶中。ora_hash 函数是确定性的吗?
在我的程序中,我将进行几个不同的数据库查询,每个查询都要求不同的存储桶编号。
例如,在一个查询中,我可能会询问前两个存储桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (0,1);
在随后的查询中,我可能会要求第二个和第三个存储桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (1,2);
在上面的例子中,ora_hash 是否总是将表分成完全相同的 10 个桶?假设表中的数据没有改变。第二个存储桶(存储桶 1)在两个查询中是否相同?
有文档表明种子值使 oracle 能够为同一数据集返回不同的结果。所以我假设如果我不使用种子值,那么 ora_hash 将是确定性的。请参阅文档。