Details
-
Bug
-
Resolution: Duplicate
-
Major - P3
-
None
-
1.6.0
-
None
-
Debian Lenny 4.0, amd64
-
Linux
Description
// First of all, my indexes:
db.notes.getIndexes() [
{
"name" : "id",
"ns" : "qix.notes",
"key" :
},
{
"ns" : "qix.notes",
"name" : "shared_to_1",
"key" :
},
{
"ns" : "qix.notes",
"name" : "tags_1",
"key" :
},
{
"ns" : "qix.notes",
"name" : "owner_account_id_1",
"key" :
},
{
"ns" : "qix.notes",
"name" : "location_2d",
"key" :
}
]
// No sorting - $or is fast
> db.notes.find({$or : [
{owner_account_id : ObjectId("0000000000000000000c7e98")},
{shared_to : ObjectId("0000000000000000000c7e98")}] }).explain()
{
"clauses" : [
{
"cursor" : "BtreeCursor owner_account_id_1",
"nscanned" : 255,
"nscannedObjects" : 255,
"n" : 255,
"millis" : 0,
"indexBounds" :
,
"allPlans" : [
{
"cursor" : "BtreeCursor owner_account_id_1",
"indexBounds" :
}
]
},
{
"cursor" : "BtreeCursor shared_to_1",
"nscanned" : 0,
"nscannedObjects" : 0,
"n" : 0,
"millis" : 0,
"indexBounds" :
,
"allPlans" : [
{
"cursor" : "BtreeCursor shared_to_1",
"indexBounds" :
}
]
}
],
"nscanned" : 255,
"nscanneObjects" : 255,
"n" : 255,
"millis" : 0
}
// Sort + limit, $or is slow:
> db.notes.find({$or : [
{owner_account_id : ObjectId("0000000000000000000c7e98")},
{shared_to : ObjectId("0000000000000000000c7e98")}] }).limit(20).sort(
{created_at:1}).explain()
{
"cursor" : "BasicCursor",
"nscanned" : 822547,
"nscannedObjects" : 822547,
"n" : 20,
"scanAndOrder" : true,
"millis" : 1505,
"indexBounds" : {
}
}