Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zaimplementować ora_hash (seedable hash, który dzieli dowolny typ danych sql na n segmentów)

Myślę, że mówisz o doskonałej funkcji skrótu. Funkcja Oracle ORA_HASH nie jest idealną funkcją mieszającą.

http://en.wikipedia.org/wiki/Perfect_hash_function

Tak blisko, jak zbliżysz się do tego, czego chcesz, jest tablica asocjacyjna. Oracle to ma.Zacznij bawić się tym przykładem:

set serverout on size 10000
DECLARE
cursor foo 
is 
  select distinct fld1,fld2,fld9  from sometable;

type t is table of foo.%ROWTYPE
  index by varchar2;   -- change the index to an int if you want

myarray t; -- myarray is a table of records -- whatever foo returns

BEGIN
  for x in foo
  loop
      -- index using the first column of the fetched row  "fld1":
      myarray(x.fld1)=x;  -- assign the rowtype to the table of records.      
  end loop;

END;
/  

Uwaga:tablica asocjacyjna jest zbudowana na tablicy haszującej, powyższy przykład używa fld1 jako klucza haszującego. Tak więc powyższe będzie działać tylko wtedy, gdy tak jak opisujesz, doskonałe mieszanie, wtedy i tylko wtedy, gdy fld1 jest unikalnym polem. To jest to, co jest tam do zrobienia. Nigdy nie jest to wymagane.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gdzie jest folder roboczy Bea Weblogic?

  2. Jak dodać atrybut do xml zawartego w CLOB w bazie danych Oracle?

  3. Oracle:Czy istnieje sposób na uzyskanie najnowszych błędów składni SQL?

  4. Parametr wejściowy Oracle PL\SQL Null Warunek WHERE

  5. EBS 12.2.5 i nowsze:Niewspółosiowość przycisku strony logowania