2015-04-17 3 views
0

У меня есть теоретическая проблема о производительности LoadStartingWith. Давайте возьмем пример из documentation:Производительность LoadStartingWith в RavenDb

BlogPost[] prefixedResultsWithMatch = session.Advanced 
    .LoadStartingWith<BlogPost>("blogposts/1", "*/Author/*t"); 

Таким образом, мы не имеем индекс. Этот «запрос» отправляется непосредственно в хранилище. Как это можно эффективно выполнять (без полноэкранного режима)? Есть ли внутренний индекс для идентификаторов на уровне RavenDb или хранения (esent, Voron)?

ответ

2

Как это работает, у нас есть префикс и индекс идентификатора. Таким образом, мы можем сканировать только документы, соответствующие префиксу, который вы указали. Но тогда мы должны сопоставлять каждый из них с фильтром, который у вас есть.

0

Насколько я знаю, Raven всегда поддерживает индексы документов.

Если вы выполняете запрос по типу без каких-либо параметров запроса, Raven не должен создавать автоматический индекс, так как идентификаторы, указывающие на фактические документы, уже известны Raven.

Так что это то же самое, что и «запрос загрузки», который не использует индекс.

Смежные вопросы