Я использую MongoDB, и у меня есть набор документов со следующей структурой:
{
fName:"Foo",
lName:"Barius",
email:"[email protected]",
search:"foo barius"
}
Я создаю функцию, которая будет выполнять поиск регулярных выражений в поле search
. Чтобы оптимизировать производительность, я проиндексировал эту коллекцию в поле поиска. Однако все еще немного медленнее. Поэтому я запрограммировал explain()
на пример запроса:
db.Collection.find({search:/bar/}).explain();
В соответствии с планом выигрыша, я вижу следующие используемые значения индексов:
"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]
Второй набор имеет смысл - он смотрит на все, что содержит бар, на все, что содержит бар. Однако первый набор меня озадачивает. Кажется, он смотрит в пределах ""
включительно до {}
exclusive. Я обеспокоен тем, что этот дополнительный набор ограничений замедляет мой запрос. Нужно ли держать? Если это не так, как я могу предотвратить его включение?