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.