Probeer nls-parameters uit uw verschillende gevallen (ide's of java-programma's) te halen, ze moeten anders zijn
select * from NLS_SESSION_PARAMETERS
Stel vervolgens binnen uw winkelprocedure de variabelen in om ze gelijk te maken aan het snelste geval.
execute immediate 'alter session set NLS_SORT=''SPANISH''';
Zodra je SP alle nls-parameters hebt. Het zal snel werken.
Ik heb onlangs een soortgelijk geval gevonden in Alter-sessie vertraagt de query via Hibernate . maar in hun geval veranderden ze de parameters en werden toen traag.
Ik onderzocht en ontdekte dat de parameters NLS_COMP y NLS_SORT van invloed kunnen zijn op hoe orakel gebruik maakt van plan uitvoeren voor string (wanneer het vergelijkt of bestelt)
Wanneer NLS_COMP is gedefinieerd als LINGUISTIC, zal het de taal gebruiken die is gedefinieerd in NLS_SORT.
bijvoorbeeld, als NLS_COMP =LINGUISTIC en NLS_SORT=BINARI_AI uw vraag is
select * from table where string_column like 'HI%'
intern zal het doen
select * from table where
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('324242432')
NLSSORT(string_column,'BINARI_AI') >= HEXTORAW('675757576')
dus als je geen index hebt voor NLSSORT(kolom,'BINARI_AI'), zal het erg traag zijn.
wetende dat NLS_SORT=BINARY_AI accent-ongevoelig en hoofdletter-ongevoelig uw volgorde en vergelijkingen zal maken.