Есть Акспта 3.0SP3 + Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
Для тестирования взял 2 запросика из 1 формы, с фильтром и без
Код:
static void Job127(Args _args)
{
UserConnection con = new UserConnection();
Statement stat = con.createStatement();
CustInvoice4PaymJour_RU paymJour;
CustInvoice4PaymSalesLink_RU salesLink;
;
//stat.executeUpdate("ALTER SESSION SET query_rewrite_enabled=true");
//stat.executeUpdate("ALTER SESSION SET query_rewrite_enabled=false");
//stat.executeUpdate("ALTER SESSION SET NLS_SORT='RUSSIAN'");
stat.executeUpdate("ALTER SESSION SET NLS_SORT='BINARY'");
//stat.executeUpdate("ALTER SESSION SET NLS_COMP=ANSI");
stat.executeUpdate("ALTER SESSION SET NLS_COMP='BINARY'");
paymJour.setConnection(con);
salesLink.setConnection(con);
select firstfast paymJour
order by Invoice4PaymId, Invoice4PaymDate
join salesLink
where salesLink.Invoice4PaymId == paymJour.Invoice4PaymId
&& salesLink.Invoice4PaymDate == paymJour.Invoice4PaymDate
&& salesLink.SalesId == paymJour.SalesId
&& salesLink.OrigSalesId == "0099556";
select firstfast paymJour
order by Invoice4PaymId, Invoice4PaymDate
join salesLink
where salesLink.Invoice4PaymId == paymJour.Invoice4PaymId
&& salesLink.Invoice4PaymDate == paymJour.Invoice4PaymDate
&& salesLink.SalesId == paymJour.SalesId;
}
Время исполнения:
первого 6,5 сек (получаем всего 1 запись)
второго 0,1 сек (получаем первую запись)
После изменения настроек
Код:
stat.executeUpdate("ALTER SESSION SET NLS_SORT='RUSSIAN'");
//stat.executeUpdate("ALTER SESSION SET NLS_SORT='BINARY'");
Имеем обратную картину со временем исполнения
первого 0,1 сек (получаем всего 1 запись)
второго 5,5 сек (получаем первую запись)
Очень хочется, чтобы оба запроса быстро выполнялись

Есть какие-нибудь мысли, куда смотреть?
(нанять опытного DBA не предлагать плиз)
P.S. NLS_SORT='BINARY' - прописано в ktd-файле, так что при большом желании можно поменять раз и навсегда