powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
13 сообщений из 13, страница 1 из 1
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #36575028
Доброго времени суток!

есть запрос
select max(time) from table.
Поле time - типа date. Проиндексировано. Но если дать такой запрос? план будет:
INDEX FULL SCAN. и действительно выбирает долго....
может есть хинт типа INDEX FULL SCAN(MIN/MAX) или INDEX FAST FULL SCAN(MIN/MAX)...

заранее благодарю!
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #36575051
да, в гугле смотрел)

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm

если верить этой документации - то такого хинта нет...но хочется понять:
1) почему оптимизатор делает такой выбор
2) как это испраить

PS:

1) выбор точно не праильный - таблица храниться за месяц, данные распределены равномерно
2) статистику по индексу собирал....
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #36575082
Фотография GL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий_Кунин,

Докажите. Покажите реальную таблицу (DDL) и реальный план (DBMS_XPLAN.DISPLAY). Проверьте ещё статистику. И на таблицу и на индексы.
Мне так и не удалось получить простой IFS ни на одной таблице по такому запросу(10.2.0.3).
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #36575188
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий_Кунин,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table t1(
id number primary key,
dt1 date null,
dt2 date null,
info char( 100 )
);

insert /*+ append */ into t1(id, dt1, dt2, info)
select 
level, 
decode(mod(level,  2 ),  0 , sysdate + level, null),
decode(mod(level,  2 ),  0 , sysdate        , null), 
'it is my sample' 
from dual connect by level <  1000000 ;

commit;

create index my_ind1 on t1(dt1);
create index my_ind2 on t1(dt2);

explain plan for select max(dt1) from t1;
explain plan for select max(dt2) from t1;
В обоих случаях INDEX FULL SCAN(MIN/MAX)
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #36575349
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select max(time) from table where time is not null
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #36575357
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудровselect max(time) from table where time is not null Это не обязательно, т.к. null игнорируются для агрегирующих функций. Разве что баг какой-то.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #37927454
Деев И.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вчера такая же проблема вылезла на одной из баз. Оказалось, что индекс был создан как reverse.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #38404343
beaver06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wurdu,

а у меня при date_add is not null - index seek, а без этого - index scan
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #38404532
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beaver06wurdu,

а у меня при date_add is not null - index seek, а без этого - index scanЧто такое index seek и в каком случае он появляется.
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #38404539
beaver06
Код: plaintext
1.
2.
Распределение сообщений по форумам
 Microsoft SQL Server 	410
 Oracle 	        1
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #39720823
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня при пересоздания индекса в REVERSE теперь запросы с min/max повисают на

Код: plsql
1.
2.
3.
4.
Description	Владелец объекта	Имя объекта	Стоимость	Мощность	Байты
SELECT STATEMENT, GOAL = ALL_ROWS			58,463	1	8
 SORT AGGREGATE				1	8
  INDEX FULL SCAN	owner	t_index	58,463	297,492,035	2,379,936,280



Есть какие-то проблемы с реверсами?
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #39720837
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimyazЕсть какие-то проблемы с реверсами?Как ты себе представляешь сравнение на больше-меньше реверсированного значения?
...
Рейтинг: 0 / 0
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
    #39720850
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-dimyazЕсть какие-то проблемы с реверсами?Как ты себе представляешь сравнение на больше-меньше реверсированного значения?

Никак, спасибо
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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