Я работаю с базой данных Oracle, и мне нужно иметь возможность разбивать данные в таблице. Я понимаю, что у Rracle есть функция ora_hash, которая может разбивать данные на ведра. Является ли функция ora_hash детерминированной?
В моей программе я буду делать несколько разных запросов к базе данных с каждым запросом, запрашивающим другой номер ведра.
Например, в одном запросе я могу запросить первые два ведра:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (0,1);
В следующем запросе я могу запросить 2-е и 3-е ведро:
SELECT * FROM sales WHERE ORA_HASH(cust_id, 9) in (1,2);
В приведенном выше примере будет ли ora_hash всегда разделять таблицу на те же 10 ковшей? Предположим, что данные в таблицах не изменились. Будет ли второе ведро (ведро 1) идентичным в обоих запросах?
Существует документация, в которой предполагается, что начальное значение позволяет oracle возвращать разные результаты для одного и того же набора данных. Поэтому я предполагаю, что если я не буду использовать начальное значение, то ora_hash будет детерминированным. См. документацию.