Ответ
Да, есть. В 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() помогает проверить использование индекса.