Hi Sam
When not using hint() --> Full Tablescan --> Slow
When using hint() -->using proper index ---> But slow !!!
Slow even hint({start:1}), hint({end:1}) or compound index hint like
hint({start:1,end:1})
I am pasting output, what all indexes collection is having + each explain
--------------------
qry1={$or:[{start:{"$regex":"^te7uexyz2g3"}},{start:{"$regex":"^rax1"}}]}
qry2={$or:[{end:{"$regex":"^te7u6u8nr6z7"}},{end:{"$regex":"^rax2"}}]}
qry3= {$and:[qry1,qry2]}
> db.startend.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "gmap3.startend",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"start" : 1
},
"ns" : "gmap3.startend",
"name" : "start_1"
},
{
"v" : 1,
"key" : {
"start" : 1,
"end" : 1
},
"ns" : "gmap3.startend",
"name" : "start_1_end_1"
},
{
"v" : 1,
"key" : {
"end" : 1
},
"ns" : "gmap3.startend",
"name" : "end_1"
}
]
>
> db.startend.find(qry3).explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 101010,
"nscanned" : 101010,
"nscannedObjectsAllPlans" : 101010,
"nscannedAllPlans" : 101010,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 7389,
"indexBounds" : {
},
"server" : "raxit-Lenovo-G570:27017"
}
> db.startend.find(qry3).hint({start:1}).explain()
{
"cursor" : "BtreeCursor start_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 9,
"nscanned" : 101010,
"nscannedObjectsAllPlans" : 9,
"nscannedAllPlans" : 101010,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 5963,
"indexBounds" : {
"start" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
]
},
"server" : "raxit-Lenovo-G570:27017"
}
> db.startend.find(qry3).hint({end:1}).explain()
{
"cursor" : "BtreeCursor end_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 16,
"nscanned" : 101010,
"nscannedObjectsAllPlans" : 16,
"nscannedAllPlans" : 101010,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 7993,
"indexBounds" : {
"end" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
]
},
"server" : "raxit-Lenovo-G570:27017"
}
> db.startend.find(qry3).hint({start:1,end:1}).explain()
{
"cursor" : "BtreeCursor start_1_end_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 101010,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 101010,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 5980,
"indexBounds" : {
"start" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
],
"end" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
]
},
"server" : "raxit-Lenovo-G570:27017"
}
------------
Raxit