Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah ora_hash deterministik?

ORA_HASH pasti deterministik untuk tipe data yang dapat digunakan untuk partisi, seperti NUMBER, VARCHAR, DATE, dll.

Tapi ORA_HASH adalah tidak deterministik untuk setidaknya beberapa tipe data lain, seperti CLOB.

Jawaban saya didasarkan pada ini Artikel Jonathan Lewis tentang ORA_HASH .

Jonathan Lewis tidak secara eksplisit mengatakan mereka deterministik, tetapi dia menyebutkan bahwa ORA_HASH "tampaknya fungsi yang digunakan secara internal - dengan benih nol - untuk menentukan partisi mana yang termasuk dalam baris dalam tabel yang dipartisi hash". Dan jika digunakan untuk partisi hash maka harus bersifat deterministik, jika tidak, penggabungan partisi tidak akan berfungsi.

Untuk menunjukkan bahwa ORA_HASH bisa non-deterministik untuk beberapa tipe data, jalankan kueri di bawah ini. Ini dari komentar di artikel yang sama:

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;

Anehnya, masalah yang sama ini terjadi dengan dbms_sqlhash.gethash .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengupgrade Kontrol Grid Setelah Upgrade DB Manual

  2. ubah format tanggal 'yyyy/mm/dd' menjadi 'mm-dd-yyyy' di Oracle

  3. plsql - cara mengembalikan array asosiatif ke java

  4. Oracle mengapa membuat pemicu gagal ketika ada bidang yang disebut stempel waktu?

  5. Cara mendapatkan daftar semua prosedur di dalam paket oracle