Если у меня есть индекс с несколькими столбцами (a, b, c) и один отдельный индекс d, тогда мой запрос использует b, a, c, d, будет ли выбран оба индекса? Будет ли индекс выбран или нет для этого запроса?Проблема с несколькими столбцами в DB2
ответ
В командной строке DB2, попробуйте следующее:
db2 => explain plan for ...insert-query-here...
В результате, вы будете видеть, когда используются индексы и когда DB2 будет использовать полное сканирование таблицы.
Если вы измените его на a, b, c, d, то будет использоваться индекс (a, b, c).
Если вы измените его на d, b, a, c (или все, начиная с d), будет выбран индекс (d).
В основном, используйте столбцы в том же порядке, что и индекс, который вы хотите использовать.
Оптимизатор, основанный на затратах (например, DB2), будет использовать статистику для табличных и индексных объектов, чтобы определить, будет ли индекс (A, B, C) или (D) лучше подходит для заданного запроса , Показатель (количество уникальных значений в индексе) является одной из нескольких статистических данных, собранных командой RUNSTATS, чтобы помочь оптимизатору оценить относительные затраты на ввод-вывод и ЦП с каждым возможным доступом. Команда объяснения, упомянутая в ответе Аарона Дигуллы, а также средство db2expln, помогут вам понять, какой индекс будет выбран.