Inclusivity of index bounds is not expressed in explain output

XMLWordPrintableJSON

    • Fully Compatible
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      > c.ensureIndex({a:1})
      > c.find({a:{$gt:5}})
      > c.find({a:{$gt:5}}).explain()
      {
      	"cursor" : "BtreeCursor a_1",
      	"nscanned" : 0,
      	"nscannedObjects" : 0,
      	"n" : 0,
      	"millis" : 7,
      	"nYields" : 0,
      	"nChunkSkips" : 0,
      	"isMultiKey" : false,
      	"indexOnly" : false,
      	"indexBounds" : {
      		"a" : [
      			[
      				5,
      				1.7976931348623157e+308
      			]
      		]
      	}
      }
      > c.find({a:{$gte:5}}).explain()
      {
      	"cursor" : "BtreeCursor a_1",
      	"nscanned" : 0,
      	"nscannedObjects" : 0,
      	"n" : 0,
      	"millis" : 0,
      	"nYields" : 0,
      	"nChunkSkips" : 0,
      	"isMultiKey" : false,
      	"indexOnly" : false,
      	"indexBounds" : {
      		"a" : [
      			[
      				5,
      				1.7976931348623157e+308
      			]
      		]
      	}
      }
      

      With an exclusive bound our btree scanning implementation can avoid scanning every key with a=5, while with an inclusive bound we must scan every key with a=5. However, there is no indication of this from the explain output. I usually mention that this is the case when doing new hire training, and recently it was raised specifically as a usability issue.

              Assignee:
              Benety Goh
              Reporter:
              Aaron Staple (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: