Есть ли опыт работы с Compound Index

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

Ответ

Да, есть. В MongoDB и некоторых других базах данных составной индекс (compound index) — это индекс, который включает несколько полей документа. Он ускоряет запросы, которые фильтруют или сортируют по этим полям.

Пример создания в MongoDB:

index := mongo.IndexModel{
    Keys: bson.D{
        {Key: "field1", Value: 1},
        {Key: "field2", Value: -1},
    },
}
_, err := collection.Indexes().CreateOne(context.TODO(), index)

Нюансы:

  • Порядок полей в индексе важен: запросы должны использовать префикс индекса (например, field1 или field1 + field2).
  • Составные индексы могут поддерживать сортировку, если порядок сортировки совпадает или обратен порядку индекса.
  • Использование $or, $in может ограничить применение индекса.

Оптимизация запросов через explain() помогает проверить использование индекса.