У меня есть две таблицы со многими столбцами, для которых мне нужно создать индекс (ы) на основе наиболее распространенных способов фильтрации таблиц при запросе.
Первичный ключ таблицы 1 - это столбцы A, B, C, D и E.
Первичным ключом таблицы 2 являются столбцы A, B, C и F.
Таблица 2 будет оставлена присоединенной к таблице 1 для столбцов A, B, C и F.
Обе таблицы уже имеют индекс первичного ключа, и я также создал индекс для таблицы 1, используя столбцы A, B, C и F, поскольку это внешний ключ.
При запросе к таблицам фильтр всегда будет состоять из столбцов A, B и C и одного из других столбцов в таблице 1 или 2.
Столбцы A, B и C вместе имеют несколько сотен комбинаций.
Другие столбцы, которыми может быть четвертый столбец в фильтре, следующие:
- D (таблица 1): миллионы возможных значений
- F (обе таблицы): миллионы возможных значений
- G (таблица 1): миллионы возможных значений
- H (таблица 1): 9 возможных значений
- I (таблица 1): сотни возможных значений
- J (таблица 2 ): Миллионы возможных значений
- K (таблица 2): миллионы возможных значений
- L (таблица 2): тысячи возможных значений
- M (таблица 2): Сотни возможных значений
- N (таблица 2): 14 возможных значений
Я пытаюсь выяснить, как лучше всего создать индексы для этих таблиц. Могу ли я создать один дополнительный индекс для каждой таблицы со всеми столбцами этой таблицы, которые потенциально будут использоваться в фильтре? Есть ли какой-нибудь оптимальный способ создать несколько индексов с различными комбинациями вышеперечисленных столбцов в зависимости от количества уникальных значений? И для каждого индекса, который я создаю, как узнать, в каком порядке лучше всего размещать столбцы?
Одна вещь, которую я уже пробовал, - это создание индекса для каждого возможного способа запроса таблиц. Но я быстро понял, что это невозможно, когда значительно сократилось время, необходимое для вставки данных в таблицы, и в итоге закончилось табличное пространство UNDO.