我正在使用Oracle数据库,我需要能够在表中对数据进行分区.据我所知,Rracle有一个ora_hash函数,可以将数据分区为桶.ora_hash函数是否确定?
在我的程序中,我将进行几个不同的数据库查询,每个查询都要求一个不同的桶号.
例如,在一个查询中,我可能会要求前两个桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (0,1);
Run Code Online (Sandbox Code Playgroud)
在随后的查询中,我可能会要求第2和第3个桶:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (1,2);
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,ora_hash是否总是将表分成完全相同的10个桶?假设表中的数据没有改变.第二个桶(桶1)在两个查询中是否相同?
有文档表明,种子值使oracle能够为同一数据集返回不同的结果.所以我假设如果我不使用种子值,那么ora_hash将是确定性的.请参阅文档.
Ora_hash是确定性的,因为保持输入和种子不变将产生确定的输出.
但是,对于任何种子(包括默认值),ora_hash的输出必须具有以下属性:
"没有任何方法可以用来预测ORA_HASH的结果会比任何级别的成功高于纯随机猜测吗?"
我想在xmltype数据类型上使用ORA_HASH,解决方法是直接的解决方案吗?
我使用oracle 11g r2和二进制xml作为xmltype列的存储选项
我用于创建表的查询是
create table samplebinary ( indexid number(19,0) , xmlcolumn xmltype not null) xmltype column xmlcolumn store as binary xml;