Может ли БД использовать несколько индексов в запросе

«Может ли БД использовать несколько индексов в запросе» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, БД может использовать несколько индексов в одном запросе. Это называется индексное объединение (index merge).

Пример в SQL:

SELECT * FROM users WHERE age > 30 AND name = 'John';

Если есть отдельные индексы на age и name, СУБД может объединить результаты сканирования обоих индексов.

В Golang при работе с ORM (например, GORM):

db.Where("age > ?", 30).Where("name = ?", "John").Find(&users)

Здесь БД может задействовать оба индекса, если они существуют.

Однако эффективность зависит от СУБД и оптимизатора запросов. Иногда лучше создать составной индекс.