powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / opt_estimate по индексу в отсутствие таблицы
7 сообщений из 7, страница 1 из 1
opt_estimate по индексу в отсутствие таблицы
    #39553499
avdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос типа
select /*+ OPT_ESTIMATE(INDEX_SKIP_SCAN DD IDX01 ROWS=1234) */
count(vn) cnt from Table1 DD where vn in (:p1);

Кардинальность для неких нужд он выдает плохую, поэтому требуется поправить ее на 1234.

Но. Поле vn находится в индексе, поэтому таблица не читается, а только индекс.
Фактически нужно задать кардинальность индекса.
Строка плана выглядит примерно так:
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 2193 (100) | |
| 1 | SORT AGGREGATE | | 1 | 6 | | |
|* 2 | INDEX SKIP SCAN | IDX01 | 21 | 126 | 2193 (1)| 00:00:27 |
----------------------------------------------------------------------------------------------

И, соответственно, хинт в таком случае не работает.
Но как только поле vn в count заменим на поле, какого в индексе нет, то план показывает доступ к таблице
и хинт работает:
select /*+ OPT_ESTIMATE(INDEX_SKIP_SCAN DD IDX01 ROWS=1234) */
count(ts) cnt from Table1 DD where vn in (:p1);

---------------------------------------------------------------
| Id | Operation | Name | Rows |
---------------------------------------------------------------
| 0 | SELECT STATEMENT | | |
| 1 | SORT AGGREGATE | | 1 |
|* 2 | INDEX UNIQUE SCAN| I_PK | 21 |
|* 3 | INDEX SKIP SCAN | IDX01 | 1234 |
---------------------------------------------------------------

I_PK - это таблица, просто она IOT.

Вопрос - как заставить хинт работать на голом индексе, без таблицы, как показано в 1 плане?
...
Рейтинг: 0 / 0
opt_estimate по индексу в отсутствие таблицы
    #39553544
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
avdu,

потому что в первом случае берется кардиналость по таблице. Сравни с
Код: plsql
1.
2.
3.
4.
5.
select /*+ 
OPT_ESTIMATE(INDEX_SKIP_SCAN DD IDX01 ROWS=1234) 
OPT_ESTIMATE(TABLE DD ROWS=1236) 
*/ 
count(vn) cnt from Table1 DD where vn in (:p1);
...
Рейтинг: 0 / 0
opt_estimate по индексу в отсутствие таблицы
    #39553553
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
avdu,

а вообще почему не использовать NO_INDEX_SS если хотите от него избавиться?
...
Рейтинг: 0 / 0
opt_estimate по индексу в отсутствие таблицы
    #39553561
avdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

точно, вроде сработало. Все перебрал, а саму таблицу не догадался из-за отсутствия таковой в плане.
А она то и требовалась, однако. В плане то ее нет, зато в жизни есть.

Спасибо, сэр
...
Рейтинг: 0 / 0
opt_estimate по индексу в отсутствие таблицы
    #39553563
avdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

от индекса не хочу, просто хочу поменять кардинальность по нему.
...
Рейтинг: 0 / 0
opt_estimate по индексу в отсутствие таблицы
    #39553569
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
avdu,

я имел ввиду не от индекса, а именно от ISS.
имхо, лучше было бы использовать, что-нибудь другое...
Например, еще можно сделать:
Код: plsql
1.
COLUMN_STATS(DD, VN, scale, length=3 distinct=5 nulls=0 min=2 max=10)

параметры подкрутить под необходимые
...
Рейтинг: 0 / 0
opt_estimate по индексу в отсутствие таблицы
    #39553571
avdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender,

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


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