Настройка базы данных - это не операция «забей и забудь», равно как и инвестирование в хедж-фонды Берни Мэдхоффа: -)
Yous должен предоставить умеренно разумное первое предположение (на основе ожидаемого поведения), а затем монитор при производстве запросов, которые выполняются.
Вы должны, как минимум, начать с индексов для отдельных столбцов. Затем, если кто-то жалуется, что его запросы выполняются слишком долго, попросите DB2 проанализировать его и посмотреть, где узкое место (объясните план или наглядное объяснение). На этом этапе вам следует выяснить, перевешивает ли стоимость добавления индекса выгоду.
Это только способ, которым вы можете быть уверены, что ваша база данных настроена правильно.
Ваше предположение, что DB2 может изменить порядок, чтобы использовать другие индексы, полностью зависит от запроса - все, кроме самых простых запросов, лишат законной силы ваше предположение.
Например, допустим, у вас есть индекс (c1, c2). Запрос
select * from t where c2 = '2009-01-01';
будет не использовать этот индекс, поскольку все клавиши c2
разбросаны по всему индексу, а не в одной области.
Это может быть достаточным для оптимизации
select * from t where c2 = '2009-01-01' and c1 = 'x';
, так как он может просто посмотреть x2009-01-01
в индексе. Тем не менее,
select * from t where c2 <= '2009-01-01' and c2 <= '2009-01-05' and c1 = 'x';
страдает той же проблемой, что и первый запрос - клавиши c2
не являются смежными в индексе.
Вот почему вы должны измерить, а не угадать .