4
색인이있는 "이름"필드가있는 모음에 150 만 개의 문서가 있습니다. db.things.find({name: /^foo/i})
과 같은 쿼리는 약 5 초가 걸리고 매우 느립니다. 동일한 레코드를 가진 비슷한 MySQL 테이블은 SELECT * FROM things WHERE name LIKE 'foo%'
을 10ms 미만으로 수행합니다.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
]
]
}
}
그래서 정규 표현식 쿼리 몽고에서 이 느리거나 내가 잘못을하고있는 중이 야 :
몽고의의 설명?