Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не работает INDEX RANGE SCAN DESCENDING / 25 сообщений из 33, страница 1 из 2
03.10.2019, 13:35
    #39871142
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
Добрый день! По книге Т.Кайта изучаю индексы, упорядоченные по убыванию.
Создаю таблицу:
Код: plsql
1.
2.
create table t as
select * from all_objects;


Создаю индекс:
Код: plsql
1.
create index t_idx on t(owner, object_type, object_name);


Выполняю процедуру:
Код: plsql
1.
exec dbms_stats.gather_table_stats(user, 'T', method_opt=>'for all indexed columns');


Пишу такой запрос:
Код: plsql
1.
2.
3.
4.
select owner, object_type from t
where owner between 'T' and 'Z'
  and object_type is not null
order by owner desc, object_type desc;


Вопрос! Почему в плане запроса отсутствует INDEX RANGE SCAN DESCENDING, а сам запрос выглядит так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Plan hash value: 2813023843
 
----------------------------------------------------------------------------
| Id  | Operation         | Name  | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |       |    981 | 17658 |    11  (10)| 00:00:01 |
|   1 |  SORT ORDER BY    |       |    981 | 17658 |    11  (10)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN| T_IDX |    981 | 17658 |    10   (0)| 00:00:01 |
----------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - access("OWNER">='T' AND "OWNER"<='Z')
       filter("OBJECT_TYPE" IS NOT NULL)
 
Note
-----
   - Warning: basic plan statistics not available. These are only collected when:
       * hint 'gather_plan_statistics' is used for the statement or
       * parameter 'statistics_level' is set to 'ALL', at session or system level



Почему нет чтения индекса в обратном порядке, а присутствует сортировка?

С хинтом в запросе:
Код: plsql
1.
2.
3.
4.
select /*+ gather_plan_statistics */ owner, object_type from t
where owner between 'T' and 'Z'
  and object_type is not null
order by owner desc, object_type desc;


ситуация повторяется.

Версия Oracle: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
...
Рейтинг: 0 / 0
03.10.2019, 14:00
    #39871154
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
ultrasonic7Почему нет В твоей БД вероятно нет owner >= T и распределение количества объектов в них сильно неравномерно.
Поставь на первое место в индексе object_name, соответствующую сортировку и поиграйся с диапазоном between.
...
Рейтинг: 0 / 0
03.10.2019, 14:19
    #39871160
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
Изменил диапазон (объекты с владельцем SYS уж точно есть:)) )

Код: plsql
1.
2.
3.
4.
select /*+ gather_plan_statistics */ owner, object_type from t
where owner between 'S' and 'Z'
  and object_type is not null
order by owner desc, object_type desc;



План поменялся, но пока тоже нет сканирования в обратном порядке:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Plan hash value: 3276893591
 
---------------------------------------------------------------------------------------
| Id  | Operation             | Name  | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |       | 40330 |   708K|       |   348   (3)| 00:00:02 |
|   1 |  SORT ORDER BY        |       | 40330 |   708K|  1120K|   348   (3)| 00:00:02 |
|*  2 |   INDEX FAST FULL SCAN| T_IDX | 40330 |   708K|       |   142   (3)| 00:00:01 |
---------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   2 - filter("OWNER">='S' AND "OWNER"<='Z' AND "OBJECT_TYPE" IS NOT NULL)
...
Рейтинг: 0 / 0
03.10.2019, 14:23
    #39871161
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
-2-ultrasonic7Почему нет В твоей БД вероятно нет owner >= T и распределение количества объектов в них сильно неравномерно.
Поставь на первое место в индексе object_name, соответствующую сортировку и поиграйся с диапазоном between.

Может, ламерский вопрос, но может это быть связано с какими-то глобальными, админскими настройками базы?
...
Рейтинг: 0 / 0
03.10.2019, 14:29
    #39871163
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
ultrasonic7Может, ламерский вопрос, но может это быть связано с какими-то глобальными, админскими настройками базы?
Установите NLS_SORT и NLS_COMP в binary.
...
Рейтинг: 0 / 0
03.10.2019, 14:36
    #39871164
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
ultrasonic7,

получи планы для
Код: plsql
1.
2.
3.
4.
select/*+ index_asc(t T_IDX) */ owner, object_type from t
where owner between 'T' and 'Z'
  and object_type is not null
order by owner desc, object_type desc


и
Код: plsql
1.
2.
3.
4.
select/*+ index_desc(t T_IDX) */ owner, object_type from t
where owner between 'T' and 'Z'
  and object_type is not null
order by owner desc, object_type desc


сравни косты, если хочешь глубже - сравни трассировки 10053
...
Рейтинг: 0 / 0
03.10.2019, 14:54
    #39871170
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
andrey_anonymousultrasonic7Может, ламерский вопрос, но может это быть связано с какими-то глобальными, админскими настройками базы?
Установите NLS_SORT и NLS_COMP в binary.

Код: plsql
1.
ALTER SESSION SET NLS_SORT = BINARY; -- NLS_COMP уже был в BINARY



Спасибо! Помогло!))

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Plan hash value: 2685572958
 
-------------------------------------------------------------------------------------
| Id  | Operation                   | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |       | 41624 |  1707K|   302   (1)| 00:00:02 |
|*  1 |  INDEX RANGE SCAN DESCENDING| T_IDX | 41624 |  1707K|   302   (1)| 00:00:02 |
-------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   1 - access("OWNER">='S' AND "OWNER"<='Z')
       filter("OBJECT_TYPE" IS NOT NULL)
...
Рейтинг: 0 / 0
03.10.2019, 14:55
    #39871171
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
Спасибо всем ответившим. Сейчас поиграюсь еще с хинтами.
...
Рейтинг: 0 / 0
03.10.2019, 14:56
    #39871173
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
xtenderсравни костыДля разных запросов сравнить косты?
...
Рейтинг: 0 / 0
03.10.2019, 14:58
    #39871175
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
ORA__SQL,

в чем же они разные?
...
Рейтинг: 0 / 0
03.10.2019, 14:59
    #39871176
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
Да, сейчас NLS_SORT сделаю обратно в RUSSIAN и сравню косты
...
Рейтинг: 0 / 0
03.10.2019, 15:01
    #39871177
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
xtenderв чем же они разные?Ну так ведь хинты разные
...
Рейтинг: 0 / 0
03.10.2019, 15:04
    #39871178
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
ultrasonic7Да, сейчас NLS_SORT сделаю обратно в RUSSIAN и сравню костыда уж нет смысла, я просто не думал, что у вас NLS_SORT разные...
...
Рейтинг: 0 / 0
03.10.2019, 15:05
    #39871180
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
ORA__SQLxtenderв чем же они разные?Ну так ведь хинты разныеи?
да даже хрен с ним с хинтами, в принципе, то, что нельзя сравнивать косты разных запросов - это миф.
...
Рейтинг: 0 / 0
03.10.2019, 15:58
    #39871210
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
xtenderORA__SQLпропущено...
Ну так ведь хинты разныеи?
да даже хрен с ним с хинтами, в принципе, то, что нельзя сравнивать косты разных запросов - это миф.
Вопрос не в мифах, а в том, что при NLS_SORT=RUSSIAN избавиться от сортировки на классическом индексе не удастся без NLS-новофич.
...
Рейтинг: 0 / 0
03.10.2019, 16:35
    #39871236
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
andrey_anonymous,

Не то комментируешь. Я ж на одно сообщение выше так и написал. Ну и навтыкать nls_sort в запрос и индекс не такой уж новодел), а новомодный collate на столбце как то ещё страшновато юзать
...
Рейтинг: 0 / 0
03.10.2019, 17:06
    #39871256
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
xtenderнавтыкать nls_sort в запрос и индекс
Это можно, но
- требует EE-лицензии
- хлопотно
- обещает сложности на мультиязычных проектах
...
Рейтинг: 0 / 0
04.10.2019, 07:39
    #39871453
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
andrey_anonymousxtenderнавтыкать nls_sort в запрос и индекстребует EE-лицензииДа ну?
...
Рейтинг: 0 / 0
04.10.2019, 13:48
    #39871652
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
ElicДа ну?
Дык FBI жеж...
...
Рейтинг: 0 / 0
04.10.2019, 13:50
    #39871655
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
andrey_anonymousДык FBI жеж...Это древний миф.
...
Рейтинг: 0 / 0
04.10.2019, 13:52
    #39871657
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
andrey_anonymousДык FBI жеж...По твоей "логике" и виртуальные колонки - EE?
...
Рейтинг: 0 / 0
04.10.2019, 13:54
    #39871658
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
Elicandrey_anonymousДык FBI жеж...По твоей "логике" и виртуальные колонки - EE?
Виталий, выражайся пожалуйста по теме.
...
Рейтинг: 0 / 0
04.10.2019, 14:04
    #39871664
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
andrey_anonymousпо теме.Elicandrey_anonymousДык FBI жеж...Это древний миф.
...
Рейтинг: 0 / 0
04.10.2019, 14:10
    #39871672
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
andrey_anonymousElicПо твоей "логике" и виртуальные колонки - EE?Виталий, выражайся пожалуйста по теме.Ты не хочешь включить свой причинно-следственный аппарат.
Индекс по колонке - EE?
Индекс по виртуальной колонке - EE?
Если ты считаешь, что "нет"+"да", то мой процитированный вопрос.
...
Рейтинг: 0 / 0
04.10.2019, 14:17
    #39871676
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INDEX RANGE SCAN DESCENDING
Elicandrey_anonymousпропущено...
Виталий, выражайся пожалуйста по теме.Ты не хочешь
Мои желания не являются предметом данного топика.
Выражайся пожалуйста по теме.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не работает INDEX RANGE SCAN DESCENDING / 25 сообщений из 33, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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