Details
-
Bug
-
Resolution: Duplicate
-
Major - P3
-
None
-
2.6.0-rc0
-
ALL
-
Description
The following query takes ~70us in v2.4.9, and ~722us in v2.6.0rc0:
db.regressions.find({$query:{_id: {$exists: false }}, $orderby:{_id:1}});
|
v2.4.9 explain output:
> db.regressions.find({$query:{_id: {$exists: false }}, $orderby:{_id:1}, $explain:1}).pretty();
|
{
|
"cursor" : "BtreeCursor _id_",
|
"isMultiKey" : false,
|
"n" : 0,
|
"nscannedObjects" : 0,
|
"nscanned" : 0,
|
"nscannedObjectsAllPlans" : 0,
|
"nscannedAllPlans" : 0,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nYields" : 0,
|
"nChunkSkips" : 0,
|
"millis" : 0,
|
"indexBounds" : {
|
"_id" : [
|
[
|
null,
|
null
|
]
|
]
|
},
|
"allPlans" : [
|
{
|
"cursor" : "BtreeCursor _id_",
|
"n" : 0,
|
"nscannedObjects" : 0,
|
"nscanned" : 0,
|
"indexBounds" : {
|
"_id" : [
|
[
|
null,
|
null
|
]
|
]
|
}
|
}
|
],
|
"oldPlan" : {
|
"cursor" : "BtreeCursor _id_",
|
"indexBounds" : {
|
"_id" : [
|
[
|
null,
|
null
|
]
|
]
|
}
|
},
|
"server" : "zzyzx:27017"
|
}
|
v2.6.0rc0 explain output:
> db.regressions.find({$query:{_id: {$exists: false }}, $orderby:{_id:1}, $explain:1}).pretty();
|
{
|
"cursor" : "BtreeCursor _id_",
|
"isMultiKey" : false,
|
"n" : 0,
|
"nscannedObjects" : 1442,
|
"nscanned" : 1442,
|
"nscannedObjectsAllPlans" : 1540,
|
"nscannedAllPlans" : 1540,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nYields" : 11,
|
"nChunkSkips" : 0,
|
"millis" : 4,
|
"indexBounds" : {
|
"_id" : [
|
[
|
{
|
"$minElement" : 1
|
},
|
{
|
"$maxElement" : 1
|
}
|
]
|
]
|
},
|
"allPlans" : [
|
{
|
"cursor" : "BtreeCursor _id_",
|
"isMultiKey" : false,
|
"n" : 0,
|
"nscannedObjects" : 1442,
|
"nscanned" : 1442,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nChunkSkips" : 0,
|
"indexBounds" : {
|
"_id" : [
|
[
|
{
|
"$minElement" : 1
|
},
|
{
|
"$maxElement" : 1
|
}
|
]
|
]
|
}
|
},
|
{
|
"cursor" : "BasicCursor",
|
"isMultiKey" : false,
|
"n" : 0,
|
"nscannedObjects" : 98,
|
"nscanned" : 98,
|
"scanAndOrder" : true,
|
"indexOnly" : false,
|
"nChunkSkips" : 0
|
}
|
],
|
"server" : "zzyzx:27017",
|
"filterSet" : false,
|
"stats" : {
|
"type" : "FETCH",
|
"works" : 1443,
|
"yields" : 11,
|
"unyields" : 11,
|
"invalidates" : 0,
|
"advanced" : 0,
|
"needTime" : 1442,
|
"needFetch" : 0,
|
"isEOF" : 1,
|
"alreadyHasObj" : 0,
|
"forcedFetches" : 0,
|
"matchTested" : 0,
|
"children" : [
|
{
|
"type" : "IXSCAN",
|
"works" : 1442,
|
"yields" : 11,
|
"unyields" : 11,
|
"invalidates" : 0,
|
"advanced" : 1442,
|
"needTime" : 0,
|
"needFetch" : 0,
|
"isEOF" : 1,
|
"keyPattern" : "{ _id: 1 }",
|
"boundsVerbose" : "field #0['_id']: [MinKey, MaxKey]",
|
"isMultiKey" : 0,
|
"yieldMovedCursor" : 0,
|
"dupsTested" : 0,
|
"dupsDropped" : 0,
|
"seenInvalidated" : 0,
|
"matchTested" : 0,
|
"keysExamined" : 1442,
|
"children" : [ ]
|
}
|
]
|
}
|
}
|
QA-401 results:
> db.regressions.find({$query:{"query":{$not:/where/}}, $orderby:{deltaRatio:-1}}).limit(1).pretty();
|
{
|
"_id" : ObjectId("530d751fd8ed4fb55a7bda24"),
|
"deltaRatio" : "9.99",
|
"deltaUs" : 650.17,
|
"v249Avg" : "72.33",
|
"v249Results" : [
|
72,
|
73,
|
74,
|
71,
|
72,
|
72
|
],
|
"rc0Avg" : "722.50",
|
"rc0Results" : [
|
715,
|
767,
|
704,
|
709,
|
708,
|
732
|
],
|
"testId" : "GeneratedTests::GeneratedQuery659[Compound2]",
|
"query" : "{ query: { _id: { $exists: false } }, orderby: { _id: 1 } }",
|
"proj" : "{ NONE: 1 }",
|
"index" : "Compound2",
|
"rc0Count" : 0,
|
"v249Count" : 0,
|
"countsMatch" : true
|
}
|
Of course, it's worth noting that this specific query is unlikely to ever be used, given that it sorts by a field which does not exist.
Attachments
Issue Links
- duplicates
-
SERVER-12557 $exists could use index
-
- Closed
-