Опитайте да получите nls параметри от вашите различни случаи (ide's или java програми) те трябва да са различни
select * from NLS_SESSION_PARAMETERS
След това вътре в процедурата на магазина задайте променливите, за да ги направите равни от най-бързия случай.
execute immediate 'alter session set NLS_SORT=''SPANISH''';
След като SP имате всички nls параметри. Ще работи бързо.
Съвсем наскоро открих подобен случай в Alter session забавя заявката чрез Hibernate. но в техния случай те променят де параметрите и след това стават бавни.
Проучих и открих, че параметрите NLS_COMP y NLS_SORT могат да повлияят на това как Oracle използва план за изпълнение за низ (когато се сравнява или подрежда)
Когато 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(колона,'BINARI_AI'), той ще бъде много бавен.
знаейки, че NLS_SORT=BINARY_AI ще направи подреждането и сравненията ви без значение за акценти и малки букви.