1
我有大約4000萬個文檔(〜10GB)的文檔集合。這個集合中的文檔相當小(約1000字節)。主要感興趣的領域如下:MongoDB中的大型集合的範圍查詢
start_x integer
end_x integer
我有一個查詢返回一個給定值的x行。對於x的值,集合中只能有一個匹配行。我正在使用以下選擇器爲此目的:
"start_x"=>{"$lte"=>1258}, "end_x"=>{"$gte"=> 1258}
我沒有得到預期的查詢性能。我從一個複合索引開始(start_x = 1,end_x = 1)。查詢計劃顯示大約400K nscanned
{
"cursor"=>"BtreeCursor start_x_1_end_x_1",
"nscanned"=>417801,
"nscannedObjects"=>1,
"n"=>1,
"millis"=>3548,
"nYields"=>0,
"nChunkSkips"=>0,
"isMultiKey"=>false,
"indexOnly"=>false
}
隨後,我在start_x和end_x字段中添加了獨立索引。查詢計劃沒有顯示太多的改進。
爲什麼
indexOnly
不是真的,即使我有一個複合索引和查詢中使用的所有字段被索引覆蓋?有沒有一種方法來優化此查詢?