Index
MongoDB:索引交集並沒有消除創建複合索引的需要
這是來自 MongoDB 文件的引用:
https://docs.mongodb.com/v3.0/core/index-intersection/#index-intersection-and-compound-indexes
但它並沒有解釋為什麼它不能消除對複合索引的需求。為什麼不呢?
目前有幾個原因(我說目前,因為將來可能會引入改進,從而降低這些點的相關性):
- 索引交集僅限於 2 個索引(在 2.6 中就是這種情況,但我在隨後的發行說明中沒有看到任何表明這已增加的內容)
- 如果您可以預測您的查詢模式並用複合索引覆蓋它們,那麼這可能會表現得更好
- 索引交集目前本質上是為更有效的方法尚未覆蓋的查詢模式提供一些基於索引的覆蓋(例如,與表掃描相反)的最後手段
對於大多數用途和大多數查詢配置文件都是如此。這裡的一個反例是一組定期執行的查詢,這將需要大量的複合索引。為使這些索引保持最新所做的工作,它們佔用的記憶體量可能意味著索引交集是一種更好的策略。然而,這是一種極端情況——大多數數據庫使用情況都可以被高效地分析和索引,因此不需要索引交集。