Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / хинт /*+ INDEX FULL SCAN(MIN/MAX)*/ / 13 сообщений из 13, страница 1 из 1
12.04.2010, 20:10
    #36575028
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
Доброго времени суток!

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

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

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

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

PS:

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

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

Код: 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
13.04.2010, 02:43
    #36575349
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
select max(time) from table where time is not null
...
Рейтинг: 0 / 0
13.04.2010, 03:06
    #36575357
wurdu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
Вячеслав Любомудровselect max(time) from table where time is not null Это не обязательно, т.к. null игнорируются для агрегирующих функций. Разве что баг какой-то.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.08.2012, 09:50
    #37927454
Деев И.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
Вчера такая же проблема вылезла на одной из баз. Оказалось, что индекс был создан как reverse.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.09.2013, 09:53
    #38404343
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
wurdu,

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

а у меня при date_add is not null - index seek, а без этого - index scanЧто такое index seek и в каком случае он появляется.
...
Рейтинг: 0 / 0
23.09.2013, 12:42
    #38404539
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
beaver06
Код: plaintext
1.
2.
Распределение сообщений по форумам
 Microsoft SQL Server 	410
 Oracle 	        1
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.10.2018, 12:12
    #39720823
dimyaz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
у меня при пересоздания индекса в 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
22.10.2018, 12:33
    #39720837
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
dimyazЕсть какие-то проблемы с реверсами?Как ты себе представляешь сравнение на больше-меньше реверсированного значения?
...
Рейтинг: 0 / 0
22.10.2018, 13:03
    #39720850
dimyaz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хинт /*+ INDEX FULL SCAN(MIN/MAX)*/
-2-dimyazЕсть какие-то проблемы с реверсами?Как ты себе представляешь сравнение на больше-меньше реверсированного значения?

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


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