2011-06-03 31 views
3

我有這樣的存儲在集合中的文件:效率索引字段VS子場的

{ 
    _id : ... 
    sender: {memberid:<something>, name:<something>} 
} 

I指數集合的子場sender.memberid。我讀的地方,通過索引是subfiled比場效率較低(性能明智),因此更改文檔結構:由senderid

{ 
    _id: ... 
    senderid: ... 
    sendername: ... 
} 

和索引會導致更快的插入和檢索,但文章沒有解釋爲什麼。這兩種方法真的有什麼區別嗎?如果是,那麼爲什麼?

回答

2

索引本身隻影響存儲。閱讀應該更快,而不是更慢。由於索引需要更新,因此存儲會受到一點速度損失。但是,這是針對您創建的每個索引。

如果索引是在頂層或者在某些嵌入式文檔中不應該是一個問題。

否則這聽起來更像是premature optimization。按預期使用數據庫並創建嵌入式文檔並將其編入索引。