2012-01-30 57 views
6

執行動態查詢時,RavenDB通常會創建一個臨時索引。RavenDB是否內部優化「獲取文檔ID」類型的查詢?

檢索文檔通過其Id不會觸發此行爲:

var entity = documentSession.Query<Entity>().Single(x => x.Id == 1); 

確實RavenDB具有一個內置的優化這種類型的查詢?

+1

var entity = documentSession.Load (1);沒有做臨時索引,並且速度非常快,我找到了。 – Phil 2012-01-30 11:17:39

回答

4

Arnold, 不,它的確不是而是優化了這種行爲。

1

你的假設是錯誤的,因爲它會創建一個臨時索引。如果您的示例其名稱應該是「Temp/Entities/By__document_id」

+0

Raven Studio沒有顯示這樣的索引。 – 2012-01-30 11:57:44

+0

我剛試過 - 我有這個索引在我的情況。也許你有另一個已經包含Id屬性的索引,因此查詢優化器將使用這個索引而不是創建一個新的臨時索引。但是,當您有一個新的空烏鴉實例時,它將創建一個臨時索引。 – 2012-01-30 13:33:30

+0

在我的情況下,它不會創建一個在Raven Studio中可見的臨時索引。運行時的索引名稱是「Dynamic/Entities」 – 2012-01-30 14:06:10