Рекомендуемый способ создания составного индекса в Oracle - PullRequest
0 голосов
/ 21 марта 2019

У меня есть структура запроса оракула, подобная этой:

SELECT <SOME_COLUMNS>
FROM A a
JOIN B b ON a.A_ID = b.A_ID
JOIN C c ON b.B_ID = c.B_ID

Игнорировать предложение WHERE.

Индексы с одним столбцом создаются для A_ID, B_ID и C_ID (C_ID не используется, но уже является первичным ключом в таблице C).

Каков наилучший способ создания других индексов из этих двух методов для вышеуказанного запроса?

Метод 01

  • Создание единого индекса для b.A_ID (внешний ключ)
  • Создание единого индекса для c.B_ID (внешний ключ)

Метод 02

  • Создание составного индекса для a.A_ID и b.A_ID
  • Создание составного индекса для b.B_ID и c.B_ID

Надеюсь, это поможет и другим.

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Вы можете создавать составные индексы только в пределах одной таблицы .

Так как вы предложили:

Создание составного индекса для a.A_ID и b.A_ID
Создать составной индекс для b.B_ID и c.B_ID

Это невозможно.

В вашем случае индексы с одним столбцом для столбцов a.A_ID, b.A_ID, c.A_ID будут очень хорошими.

1 голос
/ 21 марта 2019

Из этих двух методов это будет 01.

Метод 02 все равно не будет работать;Вы не можете создать индекс, который содержит столбцы из двух таблиц (a и b).

Кроме того, в зависимости от используемой версии базы данных столбцы внешнего ключа должны индексироваться в противном случае может произойти блокировка (и вам будет интересно, что происходит - происходит отсутствие индексов).

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