When an SBE plan involves in ixscan or ixseek stage, the explain output associated with that stage looks something like this:
"stage" : "ixseek", "planNodeId" : 1, "nReturned" : 3, "executionTimeMillisEstimate" : 0, "advances" : 3, "opens" : 1, "closes" : 1, "saveState" : 0, "restoreState" : 0, "isEOF" : 1, "numReads" : 3, "seeks" : 1, "recordSlot" : 5, "recordIdSlot" : 6, "snapshotIdSlot" : 3, "seekKeySlotLow" : 7, "seekKeySlotHigh" : 8, "outputSlots" : [ ], "indexKeysToInclude" : "00000000000000000000000000000000"
Notably absent from this output is any indication of what the index is. We should include the index name and/or key pattern. For comparison, here is what the output from the classic engine's IXSCAN stage looks like:
"stage" : "IXSCAN", "nReturned" : 3, "executionTimeMillisEstimate" : 0, "works" : 4, "advanced" : 3, "needTime" : 0, "needYield" : 0, "saveState" : 0, "restoreState" : 0, "isEOF" : 1, "keyPattern" : { "a" : 1 }, "indexName" : "a_1", "isMultiKey" : false, "multiKeyPaths" : { "a" : [ ] }, "isUnique" : false, "isSparse" : false, "isPartial" : false, "indexVersion" : 2, "direction" : "forward", "indexBounds" : { "a" : [ "(0.0, inf.0]" ] }, "keysExamined" : 3, "seeks" : 1, "dupsTested" : 0, "dupsDropped" : 0
We should consider adding the following information to SBE explain output for ixscan/ixseek as part of this ticket:
- Index name
- Index key pattern
- Index version
- Whether the index is multikey
- The index's multikey paths
- Whether the index is unique
- Whether the index is sparse
- Whether the index is partial