私はこの単純なプレフィックスクエリに悩まされています。あなたは(/^/)プレフィックス正規表現の形式を使用して、かなり良いパフォーマンスを得ることができ、私は結果をソートしようとすると、クエリがかなり遅いですがMongo docs状態:正規表現とソートを使用したMongodbの単純なプレフィックスクエリが遅い
940ミリ
db.posts.find({ハッシュタグ:/^noticias /})。限度(15).sort({ランク:-1})。ヒント( 'hashtags_1_rank_-1')(説明)
{
"cursor" : "BtreeCursor hashtags_1_rank_-1 multi",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 142691,
"nscanned" : 142692,
"nscannedObjectsAllPlans" : 142691,
"nscannedAllPlans" : 142692,
"scanAndOrder" : true,
"indexOnly" : false,
"nYields" : 1,
"nChunkSkips" : 0,
"millis" : 934,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticiat"
],
[
/^noticias/,
/^noticias/
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
しかし、同じクエリの未分類バージョンは超高速です:
0ミリ秒
:私はソート正規表現とを削除する場合db.posts.find({ハッシュタグ:/^noticias /})。限度(15).hint( 'hashtags_1_rank_-1')(説明)
{
"cursor" : "BtreeCursor hashtags_1_rank_-1 multi",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 15,
"nscanned" : 15,
"nscannedObjectsAllPlans" : 15,
"nscannedAllPlans" : 15,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticiat"
],
[
/^noticias/,
/^noticias/
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
クエリも速いです
0ミリ秒
db.posts.find({ハッシュタグ: 'noticias'})。限度(15).sort({ランク:-1})。ヒント( 'hashtags_1_rank_-1')。 ()
{
"cursor" : "BtreeCursor hashtags_1_rank_-1",
"isMultiKey" : true,
"n" : 15,
"nscannedObjects" : 15,
"nscanned" : 15,
"nscannedObjectsAllPlans" : 15,
"nscannedAllPlans" : 15,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"hashtags" : [
[
"noticias",
"noticias"
]
],
"rank" : [
[
{
"$maxElement" : 1
},
{
"$minElement" : 1
}
]
]
},
"server" : "XRTZ048.local:27017"
}
これは、正規表現の両方を使用してのように思えるし、ソートモンゴはたくさんのレコードをスキャンします説明。しかし、私は正規表現を使用しない場合、並べ替えはわずか15スキャンです。ここで何が間違っていますか?
jaime、私は '' scanAndOrder''が遅さの原因であると信じています。 [Andreの答え](http://stackoverflow.com/questions/11871187/removing-scanandorder-true-in-my-mongodb-query-result)を見たいかもしれませんが、あなたとまったく同じでない場合も同様かもしれません問題。 – slee