powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Почему индекс не "хватается"?
23 сообщений из 23, страница 1 из 1
Почему индекс не "хватается"?
    #34399291
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос :
select max(doc_num) from my.docs where doc_num > 99999
Есть индекс по doc_num, это поле не уникальное...
Индекс не берется, Explain показывает full table scan.... Может кто знает почему?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34399403
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Статистика собрана?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34399888
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если добавить OPTIMIZE FOR N ROWS?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34399889
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри... бред сказал... не посмотрел внимательно. )))
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34400373
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собрал еще раз на всякий случай... Результат тот же...
Я вот удивляюсь, всегда думал, что должен использоваться....
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34400443
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После
runstats on table my.docs and indexes all
табличное сканирование тоже?
Сколько записей в таблице?
Уровень оптимизации какой?
Какой план запроса без условия where?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34400739
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице порядка 200тыс. записей...
Уровень оптимизации по умолчанию, 5 скорее всего...
Хм... Интересно, что план запроса без фильтрации по полю точно такой же...
И вот еще чего, он стал цеплять другой индекс... (id, doc_num), этот индекс уникальный
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34408343
krestianin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значит сервер не считает, что используя индекс по этому полю, ему придётся провести меньший объём операций ввода/вывода, чем при чтении сразу же страниц таблицы.

Сравните значения по этим двум индексам:
select * from syscat.indexes where tabname = 'XXX'

Принято считать, что использование индекса оправдывает себя (ведь страницы индекса тоже надо понять с накопителя), если его кардинальность равна 3...5% (количество строк от их общего числа на лист индексирующего дерева).
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34411121
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свойство CARDINALITY(так пишется?) можно у определенного индекса посмотреть?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34411205
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTСвойство CARDINALITY(так пишется?) можно у определенного индекса посмотреть? SYSCAT.INDEXES.FULLKEYCARD
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34420779
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И какие поля надо обсчитывать для определения кардинальности?
FIRSTKEYCARD / FULLKEYCARD * 100?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34420958
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTИ какие поля надо обсчитывать для определения кардинальности?
FIRSTKEYCARD / FULLKEYCARD * 100?Вопрос не понял.
Что значит "обсчитывать"?
Кардинальность (cardinality) индекса (или первых n его полей) - это число различных значений всего индекса (или первых его n полей).
Кардинальность уникального индекса = кол-ву записей в таблице.
Кардинальность первых n полей индекса - функция от n монотонно не убывающая.
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34420997
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И хранится она в поел поле SYSCAT.INDEXES.FULLKEYCARD?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421030
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще чего не понимаю.... Я протестировал запрос в утилите db2advis... Она посоветовала создать 2 индекса, при создании и сборе статистики CLUSTERRATIO для этих индексов 17.... В документации написано, что если CLUSTERRATIO не высок, то оптимизатор с очень большой вероятностью его пропустит... Хотя тест показывает, что индекс стал использоваться, и запрос действительно стал выполняться живее... Чего-то это никак не выстраивается в логическую цепочку....
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421033
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTИ хранится она в поел поле SYSCAT.INDEXES.FULLKEYCARD?Там же (по ссылке) написано:

Код: plaintext
1.
2.
3.
4.
FIRSTKEYCARD 	BIGINT 	 	Number of distinct first key values; -1 if statistics are not gathered.
FIRST2KEYCARD 	BIGINT 		Number of distinct keys using the first two columns of the index; -1 if no statistics, or if not applicable.
FIRST3KEYCARD 	BIGINT 		Number of distinct keys using the first three columns of the index; -1 if no statistics, or if not applicable.
FIRST4KEYCARD 	BIGINT 		Number of distinct keys using the first four columns of the index; -1 if no statistics, or if not applicable.
FULLKEYCARD 	BIGINT 		Number of distinct full key values; -1 if statistics are not gathered.
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421043
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTВот еще чего не понимаю.... Я протестировал запрос в утилите db2advis... Она посоветовала создать 2 индекса, при создании и сборе статистики CLUSTERRATIO для этих индексов 17.... В документации написано, что если CLUSTERRATIO не высок, то оптимизатор с очень большой вероятностью его пропустит... Хотя тест показывает, что индекс стал использоваться, и запрос действительно стал выполняться живее... Чего-то это никак не выстраивается в логическую цепочку....Кластеризация индекса и его кардинальность - 2 абсолютно разные вещи.
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421050
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виноват...
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421056
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кластеризация - это упорядоченность хранения?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421081
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к началу темы:

Выгоднее сделать

select doc_num from my.docs where doc_num > 99999 order by my.docs desc fetch first 1 row only optimize for 1 row
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421178
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTКластеризация - это упорядоченность хранения? Тут почитайте.
TORT
Выгоднее сделать
select doc_num
from my.docs
where doc_num > 99999
order by my.docs desc
fetch first 1 row only
optimize for 1 rowНе понятно, почему вы не хотите использовать логический эквивалент этого запроса:
Код: plaintext
select max(doc_num) from my.docs;
Для таких запросов подходит индекс по
Код: plaintext
doc_num desc
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421435
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если еще добавить ALLOW REVERSE SCANS ?
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34421519
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем проблема с select max(...) кажется решилась.....
Я вот не пойму зачем я добавлял условие 'where doc_num > ...'... личное горе....
А на самом деле помогло пересоздание индекса с опцией allow reverse scans... В общем ошибка моя при создании индекса... Спасибо всем ответившим....
...
Рейтинг: 0 / 0
Почему индекс не "хватается"?
    #34423014
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати попробу добавить не "> docnum", а ">= docnum"

> хуже оптимизируется по сравнению с >= так как оптимизатор не знает откуда начинать смотреть индекс.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Почему индекс не "хватается"?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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