powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный план запроса на разных серверах
13 сообщений из 13, страница 1 из 1
Разный план запроса на разных серверах
    #32168107
Фотография RedPank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORACLE 8.1.6
Есть запрос

Код: plaintext
1.
2.
3.
4.
SELECT T.*, T.ROWID
FROM T
WHERE  1 = 1  and MyFunc( 26009 , 'T', RowId) =  1  
order by Id

по полю ID есть индекс T_ID. Количество записей в T ~ 5000

На одном сервере план получается такой:
Код: plaintext
1.
2.
3.
4.
SELECT STATEMENT CHOOSE
 FILTER
  TABLE ACCESS BY INDEX ROWID DEAL
    UNIQUE INDEX FULL SCAN T_ID

Выполняется очень быстро

А на другом ...
Код: plaintext
1.
2.
3.
4.
SELECT STATEMENT CHOOSE
 SORT ORDER BY 
  FILTER 
   TABLE ACCESS FULL T

ну очень долго ... TABLE ACCESS FULL T


Так и не смог найти причину ...
Различий в пакетах и таблицах нет, индексы одинаковые, статистики нет, места для сортировок хватает, хинты не помогают ...

Помогите добрым советом, пожалуйсто!

P.S. Запрос изменить не могу, т.к. он "зашит" внутри программы.
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168111
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Any chance NLS_SORT = BINARY in case 1, when in case 2 it is set to some other value (Russian, for example)? If NLS_SORT is not BINARY, it is obvious, optimizer can not use index for sorting purposes.

SY.
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168114
Фотография RedPank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NLS_SORT не определен на обоих серверах

SQL> show parameter nls_sort

NAME TYPE VALUE
------------------------------------ ------- ------------------------------
nls_sort string
SQL>
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168126
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Are you sure it is exactly same statement? In you first explain plan I see

TABLE ACCESS BY INDEX ROWID DEAL

What is DEAL? It is not referenced in SQL statement

Код: plaintext
1.
2.
3.
4.
SELECT T.*, T.ROWID
FROM T
WHERE  1 = 1  and MyFunc( 26009 , 'T', RowId) =  1  
order by Id


SY
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168137
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NLS parameters are client session driver, while SHOW PARAMETER does not show session sessings, it shows instance settings only:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> show parameter nls_sort

NAME                                 TYPE    VALUE
 ------------------------------------ ------- ------------------------------
 
nls_sort                             string
SQL> alter session set nls_sort=russian;

Session altered.

SQL> show parameter nls_sort

NAME                                 TYPE    VALUE
 ------------------------------------ ------- ------------------------------
 
nls_sort                             string


Use:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL>  SELECT  'SESSION NLS_SORT = ' || VALUE
   2      FROM  NLS_SESSION_PARAMETERS
   3      WHERE PARAMETER = 'NLS_SORT'
   4   UNION ALL
   5    SELECT  'INSTANCE NLS_SORT = ' || VALUE
   6      FROM  NLS_INSTANCE_PARAMETERS
   7      WHERE PARAMETER = 'NLS_SORT'
   8   UNION ALL
   9    SELECT  'DATABASE NLS_SORT = ' || VALUE
  10      FROM  NLS_DATABASE_PARAMETERS
  11      WHERE PARAMETER = 'NLS_SORT'
  12   /

'SESSIONNLS_SORT='||VALUE
 ------------------------------------------------------------
 
SESSION NLS_SORT = RUSSIAN
INSTANCE NLS_SORT =
DATABASE NLS_SORT = BINARY


SY
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168211
Фотография RedPank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SY
Прошу прошения. DEAL = T. Забыл поправить.

nls_sort вряд-ли имеет отношение к вопросу. Система выполняет ~ 20.000.000 запросов в день. А тормозит только этот. Но он очень часто используется ...

На ORACLE 9 можно "закрепить" план выполнения запроса. Можно ли сделать это на 8i ?
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168220
Gluk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Enterprise и Personal редакции
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168265
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А поле Id объявлено в not null?
==Различий в пакетах и таблицах нет, индексы одинаковые, статистики нет,
А почему нет статистики? Какой план со статистикой?
И как неоднократно было заявлено версия 8.1.6 не самая хорошая в плане оптимизатора
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168267
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А остальные параметры в pfile тоже одинаковые? db_file_multiblock_read_cont, например, optimizer_*?
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168280
abat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой же проблемой при переходе с 8.1.5 на 9.2.0.1

Причем в 8i время выполнения 1,5 - 2 секунд, а в 9i до 30 сек.

Проблнму решили удалив один из индексов. Время уменьшилось до 4 сек

abat
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168333
Фотография RedPank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SERG1257 СПАСИБО !!!
Not Nul помогло

Серверу то как полегчало.

Пойду биться головой о стенку !!!
Как об этом можно было забыть!!!

Р.S. Спасибо всем!
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168346
Работник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может кто объяснить почему помогло-то? т
...
Рейтинг: 0 / 0
Разный план запроса на разных серверах
    #32168453
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А может кто объяснить почему помогло-то?

потому что в данном случае сортировка производится путем index full scan, а в индексе хранятся rowid только тех строк где индексированное поле is not null. Поэтому если поле в order by допускает nulls, то оптимизатор не раcсматривает возможность выполнения сортировки по index full scan.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разный план запроса на разных серверах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]