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

Mengapa waktu eksekusi prosedur tersimpan Oracle sangat meningkat tergantung pada cara eksekusinya?

Coba dapatkan parameter nls dari kasus Anda yang berbeda (program ide atau java) mereka harus berbeda

select * from NLS_SESSION_PARAMETERS

Kemudian di dalam prosedur toko Anda, atur variabel untuk membuatnya sama dari kasus tercepat.

  execute immediate 'alter session set NLS_SORT=''SPANISH''';

Setelah Anda SP memiliki semua parameter nls . Ini akan berjalan cepat.

Saya baru-baru ini menemukan kasus serupa di Alter session memperlambat kueri melalui Hibernate . tetapi dalam kasus mereka, mereka mengubah parameter dan kemudian menjadi lambat.

Saya menyelidiki dan menemukan bahwa Parameter NLS_COMP y NLS_SORT dapat memengaruhi cara Oracle menggunakan rencana eksekusi untuk string (saat membandingkan atau memesan)

Ketika NLS_COMP didefinisikan sebagai LINGUISTIC, ia akan menggunakan bahasa yang ditentukan dalam NLS_SORT.

misalnya, jika NLS_COMP =LINGUISTIC dan NLS_SORT=BINARI_AI permintaan Anda adalah

select * from table where string_column like 'HI%'

secara internal itu akan dilakukan

select * from table where  
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('324242432')
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('675757576')

jadi jika Anda tidak memiliki indeks untuk NLSSORT(column,'BINARI_AI') akan sangat lambat.

mengetahui bahwa NLS_SORT=BINARY_AI akan membuat pemesanan dan perbandingan Anda tidak peka terhadap aksen dan huruf besar-kecil.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penyedia Oracle untuk Oledb hilang di VS 2015 Shell

  2. ini kesalahan ORA-12154:TNS:tidak dapat menyelesaikan pengidentifikasi koneksi yang ditentukan?

  3. .patch_storage

  4. Koleksi Oracle PL/SQL - Menambahkan Elemen ke Tabel yang Ada

  5. Menentukan Tanggal Paskah untuk Setiap Tahun di Oracle PLSQL