2011-08-18 120 views
1

我已經使用了mongodb 1.8.1。其中我收集了超過180萬條記錄。在這個集合中的所有記錄都是簡單對象意味着不嵌套的對象或數組Mongo組查詢不使用索引或減慢查詢速度

像如下

{ name : "xyz" , "id" : 123 ,"a" : "na" , "c" : "in" , "cmp" : "pq" , "ttl" : "sd"} 

所有記錄都是這樣。

在這個集合的時間更多5個查詢火災中,其中2是簡單的查詢一個包含存在於其中,另一個是簡單的查詢,正確使用索引。

另外兩個是組查詢,其中條件字段在索引中,一個包含存在。

另一個1個不同的查詢與適當的條件,這也是索引。

而查詢的順序是先查詢qroup查詢,然後是1個簡單的查詢,然後是不同的查詢,最後是簡單的查詢。

因此數據加載緩慢。

如果這樣的2 -3調用使得它負載非常低,有時會給錯誤讀取超時。

集合有超過1個索引。

回答

1

$存在查詢不使用索引(從1.9.1起固定)

組命令使用了所使用,而它這是專門鎖定的MongoDB的JS上下文。這將影響併發羣組查詢的性能。一個新的聚合框架正在開發中,應該對此有所幫助(2.1以後)。監測https://jira.mongodb.org/browse/SERVER-447的進展。根據我的經驗,通常更高性能的做像聚合應用程序端的「組」。