Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Запрос : select max(doc_num) from my.docs where doc_num > 99999 Есть индекс по doc_num, это поле не уникальное... Индекс не берется, Explain показывает full table scan.... Может кто знает почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 09:47 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Статистика собрана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 10:28 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
А если добавить OPTIMIZE FOR N ROWS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 12:45 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Сорри... бред сказал... не посмотрел внимательно. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 12:46 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Собрал еще раз на всякий случай... Результат тот же... Я вот удивляюсь, всегда думал, что должен использоваться.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 14:38 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
После runstats on table my.docs and indexes all табличное сканирование тоже? Сколько записей в таблице? Уровень оптимизации какой? Какой план запроса без условия where? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 14:58 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
В таблице порядка 200тыс. записей... Уровень оптимизации по умолчанию, 5 скорее всего... Хм... Интересно, что план запроса без фильтрации по полю точно такой же... И вот еще чего, он стал цеплять другой индекс... (id, doc_num), этот индекс уникальный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 16:25 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Значит сервер не считает, что используя индекс по этому полю, ему придётся провести меньший объём операций ввода/вывода, чем при чтении сразу же страниц таблицы. Сравните значения по этим двум индексам: select * from syscat.indexes where tabname = 'XXX' Принято считать, что использование индекса оправдывает себя (ведь страницы индекса тоже надо понять с накопителя), если его кардинальность равна 3...5% (количество строк от их общего числа на лист индексирующего дерева). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2007, 12:37 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Свойство CARDINALITY(так пишется?) можно у определенного индекса посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 12:00 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
TORTСвойство CARDINALITY(так пишется?) можно у определенного индекса посмотреть? SYSCAT.INDEXES.FULLKEYCARD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 12:14 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
И какие поля надо обсчитывать для определения кардинальности? FIRSTKEYCARD / FULLKEYCARD * 100? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 11:19 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
TORTИ какие поля надо обсчитывать для определения кардинальности? FIRSTKEYCARD / FULLKEYCARD * 100?Вопрос не понял. Что значит "обсчитывать"? Кардинальность (cardinality) индекса (или первых n его полей) - это число различных значений всего индекса (или первых его n полей). Кардинальность уникального индекса = кол-ву записей в таблице. Кардинальность первых n полей индекса - функция от n монотонно не убывающая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 11:55 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
И хранится она в поел поле SYSCAT.INDEXES.FULLKEYCARD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:02 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Вот еще чего не понимаю.... Я протестировал запрос в утилите db2advis... Она посоветовала создать 2 индекса, при создании и сборе статистики CLUSTERRATIO для этих индексов 17.... В документации написано, что если CLUSTERRATIO не высок, то оптимизатор с очень большой вероятностью его пропустит... Хотя тест показывает, что индекс стал использоваться, и запрос действительно стал выполняться живее... Чего-то это никак не выстраивается в логическую цепочку.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:07 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
TORTИ хранится она в поел поле SYSCAT.INDEXES.FULLKEYCARD?Там же (по ссылке) написано: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:08 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
TORTВот еще чего не понимаю.... Я протестировал запрос в утилите db2advis... Она посоветовала создать 2 индекса, при создании и сборе статистики CLUSTERRATIO для этих индексов 17.... В документации написано, что если CLUSTERRATIO не высок, то оптимизатор с очень большой вероятностью его пропустит... Хотя тест показывает, что индекс стал использоваться, и запрос действительно стал выполняться живее... Чего-то это никак не выстраивается в логическую цепочку....Кластеризация индекса и его кардинальность - 2 абсолютно разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:09 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Виноват... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:11 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Кластеризация - это упорядоченность хранения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:12 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Возвращаясь к началу темы: Выгоднее сделать select doc_num from my.docs where doc_num > 99999 order by my.docs desc fetch first 1 row only optimize for 1 row ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:17 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
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 Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 12:34 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
А если еще добавить ALLOW REVERSE SCANS ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 13:22 |
|
||
|
Почему индекс не "хватается"?
|
|||
|---|---|---|---|
|
#18+
Вообщем проблема с select max(...) кажется решилась..... Я вот не пойму зачем я добавлял условие 'where doc_num > ...'... личное горе.... А на самом деле помогло пересоздание индекса с опцией allow reverse scans... В общем ошибка моя при создании индекса... Спасибо всем ответившим.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 13:40 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34421519&tid=1604701]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 399ms |

| 0 / 0 |
