假設我有一個蒙戈數據庫具有以下文件如果每個屬性都在mongodb集合中編入索引,我是否需要複合索引?
{
"name" : "abc",
"email": "[email protected]",
"phone" : "+91 1234567890"
}
收集有很多對象(一萬左右),而我的應用程序,除了定期將對象添加到這個集合的集合,並這些數據有幾種不同類型的發現。
一種方法做了所有的三個屬性(姓名,電子郵件和電話)發現,這樣我就可以讓那些三個字段一個綜合指數,以確保這一發現工作effiently。
db.mycollection.ensureIndex({name:1,email:1,phone:1})
現在,我也有我的應用程序的方法,其提取所有具有相同名稱的對象(壞的榜樣,我知道)。所以我需要一個名稱字段的索引。
db.mycollection.ensureIndex({name:1})
漸漸地,我的應用程序增長到一個點,我必須索引其他領域。
現在,我的問題。如果我將每個屬性分別編入索引,那麼維護所有三個屬性(或兩個屬性)的組合索引是否仍然有意義?
顯然,這是一個壞榜樣......如果我犯了個集合來存儲多個聯繫人信息的人,我會使用數組。但是,這個問題純粹是關於索引。
這一切都取決於你查詢的性質真的...有太多的指標較差性能(如果有大量的插件)。對於複合索引,例如,您不能僅在'phone'上進行搜索。請確保您閱讀本節:http://docs.mongodb.org/manual/core/indexes/#compound-indexes – WiredPrairie