Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 не могу заставить использовать index  [new]
Shredder2003
Member

Откуда: деревня Ильбяково Азнакаевского района РТ
Сообщений: 460
запрос примерно такой:
UPDATE schema1.table1
   SET some_column2 =
          (  SELECT LISTAGG (F.some_column2, ', ') WITHIN GROUP (ORDER BY NULL) AS some_column2
               FROM (SELECT /*+ index(f INDEX_for_some_column3)*/
                            F.some_column2
                       FROM schema2.table2 F
                      WHERE F.some_column3 = :B1)
           GROUP BY 1)
 WHERE some_column4 = :B1 


проблема вот в этом куске:
                       SELECT /*+ index(f INDEX_for_some_column3)*/
                            F.some_column2
                       FROM schema2.table2 F
                      WHERE F.some_column3 = :B1


при запуске из application он не цепляет индекс, а делает TABLE ACCESS FULL к schema2.table2 (проверяю в SESSION BROWSER в TOAD).
Если же построить план выполнения по этому же запросу(целиком) в TOAD, скопировав его из SESSION BROWSER в EDITOR, то план красивый - индекс используется.

Не могу понять, в чём может быть разница между сессией из application и сессией из TOAD?
Куда копать?
10 июл 14, 14:38    [16286966]     Ответить | Цитировать Сообщить модератору
 Re: не могу заставить использовать index  [new]
Gustly
Member

Откуда:
Сообщений: 1426
Shredder2003,

Планы могут разниться когда запросы идут в SQL и PL/SQL. А если :b1 заменить на константу, нормально работает?
10 июл 14, 14:47    [16287028]     Ответить | Цитировать Сообщить модератору
 Re: не могу заставить использовать index  [new]
Vitalio
Member

Откуда: Москва
Сообщений: 194
Shredder2003, посмотри не отличается ли в планах access к some_column3 в лягушке и в приложении
10 июл 14, 14:51    [16287051]     Ответить | Цитировать Сообщить модератору
 Re: не могу заставить использовать index  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
Shredder2003
Куда копать?

В сторону настроек среды выполнения. Копать можно, например, через event 10053
10 июл 14, 14:54    [16287076]     Ответить | Цитировать Сообщить модератору
 Re: не могу заставить использовать index  [new]
Shredder2003
Member

Откуда: деревня Ильбяково Азнакаевского района РТ
Сообщений: 460
Спасибо, друзья.
Ответ Vitalio был самым близким.
Filter Predicate нужно было глянуть.
Оказывается, биндится в :B1 в приложении тип number, а some_column3 имеет тип varchar2.
Вот где она, разница.
10 июл 14, 14:56    [16287087]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить