Индекс, вероятно, поможет, но это зависит.
Базы данных имеют множество различных способов обработки объединений:
- Вложенные циклы (циклически проходя по одной таблице, затем по другой ).
- Гнездо зацикливается с индексом (просматривая одну таблицу и просматривая значения в другой).
- Сортировка таблиц и объединение.
- Использование индекса для сортировки таблиц и слияния.
- Хеширование.
(И вариаций на них больше!)
Выбор оптимизатора зависит от возможностей базы данных, аппаратное обеспечение, данные и статистика.
Тем не менее, для этого типа join
второй метод довольно распространен и имеет хорошую производительность, если обе таблицы помещаются в памяти. Обработка в основном циклически перебирает одну таблицу и ищет соответствующие значения в другой, используя индекс.
Хеширование и объединение (без индекса) требуют чтения и записи данных для промежуточных структур данных. На практике это может замедлить работу алгоритмов - даже если теоретическая производительность выше.
Так что, да, индекс может быть весьма полезен для запросов такого типа.