2013-10-29 38 views
0

我們正在使用Mongodb作爲我們的應用程序 我收到了有關在集合上創建索引的查詢。下面如何爲在某些字段上排序的查詢創建索引?

,首先是我的查詢,將做一個找到數據庫並返回數據

db.mycollection.find({ symbol: "UGHNG", date: "2013-11-08", mainsymbol: "HIJ" }).sort({ "price": 1,"surv": 1}).pretty() 

正如你可以從上面的查詢看到,有哪些是用於兩個領域的價格和監測網排序僅用於。

什麼是對上述

創建索引創建複合指數,其中包括上述查詢的每一個領域的最佳途徑。

db.mycollection.ensureIndex({"symbol":1,"date":1,"mainsymbol":1,"price":1,"surv":1},{"unique" : false}) 

OR

創建2個單獨的索引和一個複方指標如下圖所示,以服務上面的查詢

db.mycollection.ensureIndex({"price" : 1}, {"unique" : false}) 
db.mycollection.ensureIndex({"surv" : 1}, {"unique" : true}) 
db.mycollection.ensureIndex({"symbol":1,"date":1,"mainsymbol":1},{"unique" : false}) 

請分享你的看法是什麼在處理這方面的最佳做法在所有方面(RAM大小,查詢性能)

+0

它仍然只有一個索引每個查詢,直到https://jira.mongodb.org/browse/SERVER-3071所以我沒有看到第二個選項 – Sammaye

回答

0

除非您有查詢只需要使用price和之一3210,我認爲複合指數應該做最好的工作。

+0

嘿Anudeep點,我不明白是什麼做你的意思是「除非你有需要使用價格和存活之一的疑問」? – Pawan

0

最好的方法是使用.explain()

這會讓你知道多少工作是用食指

的每個版本做了它確實是值得花時間去探索的解釋方法和學會解釋它的輸出。

相關問題