1
我有一個巨大的數百萬記錄集合,將有4個字段用於獲取數據,可以說f1, f2, f3
用於過濾,f4
用於數據排序。將有3種類型的查詢:需要爲MongoDb構建適當的組合索引
1) filter by f1 AND f2, and sort by f4
2) filter by f1 AND f2 AND f3, and sort by f4
3) filter by f1 AND f2 AND few additional fields, and sort by f4
所以排序總是由f4。主要使用前兩種類型的查詢。案例3中的其他字段可能是集合中的任何字段(搜索功能),所以我不打算將它們用於索引。
我的建議是,唯一的組合鍵(f1, f2, f3, f4)
可能是最好的解決方案,但由於我幾乎沒有mongoDb的經驗,我決定問你們。
您是否在索要複合索引?如果是這樣,這是否有幫助:http://stackoverflow.com/questions/9901787/how-to-structure-a-compound-index-in-mongodb – themanatuf
這是類似的問題,但不同的是我沒有範圍查詢,只像'{f1:2,f2:3}'或像'f1:{in:[2,3,4]}',所以我的問題主要是爲上述每個案例創建索引的必要性,或者一個複雜指數(f1,f2,f3,f4)將涵蓋所有情況。根據@slee answwer,我必須爲每種情況創建單獨的索引 – YMC
好吧,事實證明$ in是一個範圍查詢,這就是我發現的:http://www.deanlee.cn/programming/mongodb-optimize -index規避-scanandorder / – YMC