sql >> Database teknologi >  >> RDS >> Oracle

Er ora_hash deterministisk?

ORA_HASH er bestemt deterministisk for datatyper, der kan bruges til partitionering, såsom NUMBER, VARCHAR, DATE osv.

Men ORA_HASH er ikke deterministisk for i det mindste nogle af de andre datatyper, såsom CLOB.

Mit svar er baseret på dette Jonathan Lewis artikel om ORA_HASH .

Jonathan Lewis siger ikke eksplicit, at de er deterministiske, men han nævner, at ORA_HASH "synes at være den funktion, der bruges internt - med et nul-seed - til at bestemme, hvilken partition en række tilhører i en hash-partitioneret tabel". Og hvis det bruges til hash-partitionering, skal det være deterministisk, ellers ville partitionsmæssige joinforbindelser ikke fungere.

For at vise den ORA_HASH kan være ikke-deterministisk for nogle datatyper, kør nedenstående forespørgsel. Det er fra en kommentar i samme artikel:

with src as (select to_clob('42') val from dual connect by level<=5)
select val,ora_hash(val,7) from src order by 2;

Overraskende nok sker de samme problemer med dbms_sqlhash.gethash .



  1. php oci8 ext indlæses ikke Kan ikke indlæse dynamisk bibliotek

  2. Implementering af Postgres-database på azure Container Instance?

  3. EF Core - Tabel '*.__EFMigrationsHistory' eksisterer ikke

  4. Får FEJL:Kommandoen fejlede med afslutningsstatus 1:ved forsøg på at installere mysql