Проблема с несколькими столбцами в DB2 - PullRequest
0 голосов
/ 25 февраля 2009

Если у меня есть индекс с несколькими столбцами (a, b, c) и один отдельный индекс d, тогда мой запрос использует порядок b, a, c, d, будет ли выбран оба индекса? Будет ли индекс выбран для этого запроса или нет?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2009

Если вы измените его на a, b, c, d, то будет использоваться индекс (a, b, c).
Если вы измените его на d, b, a, c (или что-либо, начинающееся с d), будет выбран индекс (d).
В основном, используйте столбцы в том же порядке, что и индекс, который вы хотите использовать.

0 голосов
/ 18 июня 2009

Оптимизатор на основе затрат (например, DB2) будет использовать статистику для объектов таблицы и индекса, чтобы определить, будет ли индекс (A, B, C) или (D) лучше подходить для данного запроса. Мощность индекса (число уникальных значений в индексе) - это одна из нескольких статистических данных, собранных командой RUNSTATS, чтобы помочь оптимизатору оценить относительные затраты ввода-вывода и ЦП для каждого возможного пути доступа. Команда объяснения, упомянутая в ответе Аарона Дигуллы, а также средство db2expln могут помочь вам понять, какой индекс будет выбран.

0 голосов
/ 25 февраля 2009

В командной строке DB2 попробуйте следующее:

db2 => explain plan for ...insert-query-here...

В результате вы увидите, когда используются индексы и когда DB2 будет использовать полное сканирование таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...