【MongoDB】複合索引

MongoDB支持複合索引,所謂複合索引就是一個索引包含多個字段,例如爲如下collection建立一個複合索引:
collection {
user_id:
score:
……
}

db.col.createIndex({‘user_id’ : 1, ‘score’ : -1})

有數據庫基礎的同學對這個也沒有什麼疑惑,而且應該知道1表示升序,-1表示降序。

  • 在MongoDB的複合索引中不允許有hash索引
  • 複合索引最多包含31個字段

其實複合索引的創建和使用並沒有太多新鮮的內容,和單字段索引差不多,但是值得一講的是複合索引的前綴匹配,這個應該在任何支持複合索引的數據庫中都存在,這裏就是以MongoDB爲例。

假如有這樣一個複合索引:

{'item' : 1, 'loc' : 1, 'stock' : 1}

那麼上述索引有以下兩個索引前綴:

1. {'item' : 1}
2. {'item' : 1, 'loc' : 1}

任何查詢可以利用複合索引或複合索引的前綴索引加速查找。也就是說,上述一個複合索引可以支持以下三種索引:

{'item' : 1}
{'item' : 1, 'loc' : 1}
{'item' : 1, 'loc' : 1, 'stock' : 1}

但是需要以下字段的索引上述複合索引是無能爲力的,只能另建索引:

{'loc' : 1}
{'stock' : 1}
{'loc' : 1, 'stock' : 1}

所以,一直提倡建立複合索引,因爲複合索引能夠帶來額外的好處,根據業務查詢,建立合適的複合索引,真是美滋滋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章