4
私は、索引付けされた「名前」フィールドを持つコレクション内に150万のドキュメントを持っています。 db.things.find({name: /^foo/i})
のようなクエリは、非常に遅い約5秒かかります。同じレコードを持つ同様のMySQLテーブルでは、SELECT * FROM things WHERE name LIKE 'foo%'
が10ミリ秒未満で実行されます。MongoDBでの遅いregexpクエリ
db.things.find({name: /^foo/i}).limit(10).explain()
{
"cursor" : "BtreeCursor name_1 multi",
"nscanned" : 325730,
"nscannedObjects" : 10,
"n" : 10,
"millis" : 4758,
"nYields" : 89,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"name" : [
[
"",
{
}
],
[
/^foo/i,
/^foo/i
]
]
}
}
だから、正規表現のクエリモンゴでその遅いですか私は間違ったことをしています:
のmongoさんは説明しますか?