異なるケース(ideまたはjavaプログラム)からnlsパラメーターを取得してみてください。それらは異なる必要があります
select * from NLS_SESSION_PARAMETERS
次に、ストアドプロシージャ内で、最速の場合と等しくなるように変数を設定します。
execute immediate 'alter session set NLS_SORT=''SPANISH''';
SPがすべてのnlsパラメータを取得したら。高速に実行されます。
私は最近、Alterセッションで同様のケースがHibernateを介してクエリを遅くすることを発見しました。しかし、彼らの場合、彼らはパラメータを変更してから遅くなりました。
調査したところ、パラメータNLS_COMP y NLS_SORTは、オラクルが文字列の実行計画をどのように使用するかに影響する可能性があることがわかりました(比較または順序付けの場合)
NLS_COMPがLINGUISTICとして定義されている場合、NLS_SORTで定義されている言語を使用します。
たとえば、NLS_COMP=LINGUISTICおよびNLS_SORT=BINARI_AIの場合、クエリは
select * from table where string_column like 'HI%'
内部的にはそれが行われます
select * from table where
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('324242432')
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('675757576')
したがって、NLSSORT(column、'BINARI_AI')のインデックスがない場合は、非常に遅くなります。
NLS_SORT =BINARY_AIを使用すると、順序付けと比較でアクセントと大文字と小文字が区別されなくなります。