查看访问计划

用户可以使用 SdbQuery.explain() 命令查看查询的访问计划。 当命令的 Detail 选项为 true 时,将会展示详细的访问计划。对于协调节点和数据节点,它们会展示的不同的详细访问计划。

协调节点上的详细访问计划

协调节点上的详细访问计划包括以下内容:

  • 协调节点上的访问计划信息
  • 涉及数据节点上的访问计划信息

其基本结构如下:

  1. {
  2. { 协调节点的访问计划信息 },
  3. "PlanPath": {
  4. "Operator": "COORD-MERGE",
  5. { 协调节点查询上下文的访问计划信息 },
  6. "ChildOperators": [
  7. {
  8. { 数据节点的访问计划信息 },
  9. ...
  10. },
  11. ...
  12. ]
  13. }
  14. }

协调节点上的访问计划包括以下信息:

字段名类型描述
NodeName字符串访问计划所在的节点的名称
GroupName字符串访问计划所在的节点属于的复制组的名称
Role字符串访问计划所在的节点的角色,”coord” 表示协调节点
Collection字符串访问计划访问的集合的名称
QueryBSON 对象访问计划解析后的用户查询条件
SortBSON 对象访问计划中的排序字段
SelectorBSON 对象访问计划执行的选择符
HintBSON 对象访问计划中指定查询使用索引的情况
Skip长整型访问计划需要跳过的记录个数
Return长整型访问计划最多返回的记录个数
Flag整型访问计划中指定的执行标志,默认值为 0
ReturnNum长整型访问计划返回记录的个数
ElapsedTime浮点型访问计划查询耗时(单位:秒)
UserCPU浮点型访问计划用户态 CPU 使用时间(单位:秒)
SysCPU浮点型访问计划内核态 CPU 使用时间(单位:秒)
PlanPathBSON 对象访问计划的具体执行操作 COORD-MERGE

Note:

COORD-MERGE 中可能包含主表的访问计划或者数据节点的访问计划

示例:

  1. {
  2. "NodeName": "hostname:11810",
  3. "GroupName": "SYSCoord",
  4. "Role": "coord",
  5. "Collection": "sample.employee",
  6. "Query": {
  7. "a": 1
  8. },
  9. "Sort": {},
  10. "Selector": {},
  11. "Hint": {
  12. "": ""
  13. },
  14. "Skip": 0,
  15. "Return": -1,
  16. "Flag": 0,
  17. "ReturnNum": 10,
  18. "ElapsedTime": 0.050839,
  19. "UserCPU": 0,
  20. "SysCPU": 0,
  21. "PlanPath": {
  22. "Operator": "COORD-MERGE",
  23. ...
  24. }
  25. }

数据节点上的详细访问计划

数据节点上的详细访问计划包括以下内容:

  • 数据节点上的访问计划信息
  • 访问计划的缓存使用情况
  • 涉及的垂直分区中主子表的访问计划信息

主表的详细访问计划

主表的详细访问计划结构如下:

  1. {
  2. { 主表的访问计划信息 },
  3. "PlanPath": {
  4. "Operator": "MERGE",
  5. { 主表查询上下文的访问计划信息 },
  6. "ChildOperators": [
  7. {
  8. { 子表的访问计划信息 },
  9. ...
  10. },
  11. ...
  12. ]
  13. }
  14. }

主表访问计划包括以下信息:

字段名类型描述
NodeName字符串访问计划所在的节点的名称
GroupName字符串访问计划所在的节点属于的复制组的名称
Role字符串访问计划所在的节点的角色,”data” 表示协调节点
Collection字符串访问计划访问的集合的名称
QueryBSON 对象访问计划解析后的用户查询条件
SortBSON 对象访问计划中的排序字段
SelectorBSON 对象访问计划执行的选择符
HintBSON 对象访问计划中指定查询使用索引的情况
Skip长整型访问计划需要跳过的记录个数
Return长整型访问计划最多返回的记录个数
Flag整型访问计划中指定的执行标志,默认值为 0
ReturnNum长整型访问计划返回记录的个数
ElapsedTime浮点型访问计划查询耗时(单位:秒)
IndexRead长整型访问计划扫描索引记录的个数
DataRead长整型访问计划扫描数据记录的个数
UserCPU浮点型访问计划用户态 CPU 使用时间(单位:秒)
SysCPU浮点型访问计划内核态 CPU 使用时间(单位:秒)
PlanPathBSON 对象访问计划的具体执行操作 MERGE

Note:

MERGE 中包含子表的访问计划,即数据节点上的普通集合的访问计划

示例:

  1. {
  2. "NodeName": "hostname:11820",
  3. "GroupName": "group",
  4. "Role": "data",
  5. "Collection": "maincs.maincl",
  6. "Query": {},
  7. "Sort": {
  8. "a": 1
  9. },
  10. "Selector": {},
  11. "Hint": {},
  12. "Skip": 0,
  13. "Return": -1,
  14. "Flag": 2048,
  15. "ReturnNum": 50000,
  16. "ElapsedTime": 1.225226,
  17. "IndexRead": 0,
  18. "DataRead": 50000,
  19. "UserCPU": 0.5399999999999991,
  20. "SysCPU": 0.02000000000000002,
  21. "PlanPath": {
  22. "Operator": "MERGE",
  23. ...
  24. }
  25. }

普通集合或子表的详细访问计划

普通集合或子表的详细访问计划结构如下:

  1. {
  2. { 集合的访问计划信息 },
  3. "PlanPath": {
  4. { 查询上下文的访问计划信息 }
  5. ...
  6. }
  7. }

该访问计划包括以下信息:

字段名类型描述
NodeName字符串访问计划所在的节点的名称
GroupName字符串访问计划所在的节点属于的复制组的名称
Role字符串访问计划所在的节点的角色,”data” 表示数据节点
Collection字符串访问计划访问的集合的名称
QueryBSON 对象访问计划解析后的用户查询条件
SortBSON 对象访问计划中的排序字段
SelectorBSON 对象访问计划执行的选择符
HintBSON 对象访问计划中指定查询使用索引的情况
Skip长整型访问计划需要跳过的记录个数
Return长整型访问计划最多返回的记录个数
Flag整型访问计划中指定的执行标志,默认值为 0
ReturnNum长整型访问计划返回记录的个数
ElapsedTime浮点型访问计划查询耗时(单位:秒)
IndexRead长整型访问计划扫描索引记录的个数
DataRead长整型访问计划扫描数据记录的个数
UserCPU浮点型访问计划用户态 CPU 使用时间(单位:秒)
SysCPU浮点型访问计划内核态 CPU 使用时间(单位:秒)
CacheStatus字符串访问计划的缓存状态:1. “NoCache” 为没有加入缓存 2. “NewCache” 为新建的缓存 3. “HitCache” 为命中的缓存
MainCLPlan布尔型访问计划是否主表共享的查询计划
CacheLevel字符串访问计划的缓存级别:1. “OPT_PLAN_NOCACHE” 为不进行缓存 2. “OPT_PLAN_ORIGINAL” 为缓存原查询计划 3. “OPT_PLAN_NORMALZIED” 为缓存泛化后的查询计划 4. “OPT_PLAN_PARAMETERIZED” 为缓存参数化的查询计划,”OPT_PLAN_FUZZYOPTR” 为缓存参数化并带操作符模糊匹配的查询计划
Parameters数组类型参数化的访问计划使用的参数列表
MatchConfigBSON 对象访问计划中的匹配符的配置
MatchConfig.EnableMixCmp布尔型访问计划的匹配符是否使用混合匹配模式
MatchConfig.Parameterized布尔型访问计划的匹配符是否支持参数化
MatchConfig.FuzzyOptr布尔型访问计划的匹配符是否支持模糊匹配
PlanPathBSON 对象访问计划的具体执行操作 SORT、TBSCAN 或 IXSCAN
SearchBSON 对象查询计划优化器搜索过的访问计划 Search 选项为 true 时显示 请参考基于代价的访问计划评估

Note:

数据节点上的主表的访问计划请参考主表的访问计划

示例:

  1. {
  2. "NodeName": "hostname:11820",
  3. "GroupName": "group",
  4. "Role": "data",
  5. "Collection": "sample.employee",
  6. "Query": {
  7. "a": {
  8. "$gt": 100
  9. }
  10. },
  11. "Sort": {},
  12. "Selector": {},
  13. "Hint": {},
  14. "Skip": 0,
  15. "Return": -1,
  16. "Flag": 2048,
  17. "ReturnNum": 0,
  18. "ElapsedTime": 0.000093,
  19. "IndexRead": 0,
  20. "DataRead": 0,
  21. "UserCPU": 0,
  22. "SysCPU": 0,
  23. "CacheStatus": "HitCache",
  24. "MainCLPlan": false,
  25. "CacheLevel": "OPT_PLAN_PARAMETERIZED",
  26. "Parameters": [
  27. 100
  28. ],
  29. "MatchConfig": {
  30. "EnableMixCmp": false,
  31. "Parameterized": true,
  32. "FuzzyOptr": false
  33. },
  34. "PlanPath": {
  35. ...
  36. }

访问计划中的操作

访问计划中包含几种具体的操作,它们的含义及包含的信息不同。

COORD-MERGE 操作

详细的访问计划中,COORD-MERGE 对象对应一个协调节点上的查询上下文对象,其中展示的信息如下:

字段名类型描述
Operator字符串操作符的名称: “COORD-MERGE”
Sort字符串COORD-MERGE 需要保证输出结果有序的排序字段
NeedReorder布尔型COORD-MERGE 是否需要根据排序字段对多个数据组的记录进行排序合并,当查询中包含排序的时候 NeedReorder 为 true
DataNodeNum整型COORD-MERGE 涉及查询的数据节点个数
DataNodeList数组COORD-MERGE 涉及查询的数据节点,按查询的执行顺序列出
DataNodeList.Name字符串COORD-MERGE 发送查询的数据节点名称
DataNodeList.EstTotalCost浮点数COORD-MERGE 发送的查询在该数据节点上查询的估算时间(单位:秒)
DataNodeList.QueryTimeSpent浮点数在数据节点上查询的执行时间(单位:秒),Run 选项为 true 时显示
DataNodeList.WaitTimeSpent浮点数COORD-MERGE 发送的查询在数据节点上查询的等待时间(单位:秒),Run 选项为 true 时显示
SelectorBSON 对象COORD-MERGE 执行的选择符
Skip长整型指定 COORD-MERGE 需要跳过的记录个数
Return长整型指定 COORD-MERGE 最多返回的记录个数
EstimateBSON 对象估算的 COORD-MERGE 代价信息,Estimate 选项为 true 时显示
Estimate.StartCost浮点型估算的 COORD-MERGE 的启动时间(单位:秒)
Estimate.RunCost浮点型估算的 COORD-MERGE的运行时间(单位:秒)
Estimate.TotalCost浮点型估算的 COORD-MERGE 的结束时间(单位:秒)
Estimate.OutputBSON 对象估算的 COORD-MERGE 输出结果的统计信息,Filter 选项包含 “Output” 时显示
Estimate.Output.Records长整型估算的 COORD-MERGE 输出的记录个数
Estimate.Output.RecordSize整型估算的 COORD-MERGE 输出的记录平均字节数
Estimate.Output.Sorted布尔型COORD-MERGE 输出结果是否有序
RunBSON 对象实际执行 COORD-MERGE 的代价信息,Run 选项为 true 时显示
Run.ContextID长整型COORD-MERGE 执行的上下文 ID
Run.StartTimestamp字符串COORD-MERGE 执行启动的时间戳
Run.QueryTimeSpent浮点型COORD-MERGE 执行耗时(单位:秒)
Run.GetMores长整型请求 COORD-MERGE 返回结果集的次数
Run.ReturnNum长整型COORD-MERGE 返回记录个数
Run.WaitTimeSpent浮点型COORD-MERGE 等待数据返回的时间(单位:秒,以秒为单位的粗略统计信息)
ChildOperators数组COORD-MERGE 的子操作(每个数据组返回的查询的访问计划结果),详细请参考:主表的访问计划或者数据节点的访问计划

示例:

  1. {
  2. ...,
  3. "PlanPath": {
  4. "Operator": "COORD-MERGE",
  5. "Sort": {},
  6. "NeedReorder": false,
  7. "DataNodeNum": 2,
  8. "DataNodeList": [
  9. {
  10. "Name": "hostname:11820",
  11. "EstTotalCost": 0.4750005,
  12. "QueryTimeSpent": 0.045813,
  13. "WaitTimeSpent": 0.000124
  14. },
  15. {
  16. "Name": "hostname:11830",
  17. "EstTotalCost": 0.4750005,
  18. "QueryTimeSpent": 0.045841,
  19. "WaitTimeSpent": 0.000108
  20. }
  21. ],
  22. "Selector": {},
  23. "Skip": 0,
  24. "Return": -1,
  25. "Estimate": {
  26. "StartCost": 0,
  27. "RunCost": 0.4750015,
  28. "TotalCost": 0.4750015,
  29. "Output": {
  30. "Records": 2,
  31. "RecordSize": 43,
  32. "Sorted": false
  33. }
  34. },
  35. "Run": {
  36. "ContextID": 9,
  37. "StartTimestamp": "2017-12-09-13.51.14.749863",
  38. "QueryTimeSpent": 0.046311,
  39. "GetMores": 3,
  40. "ReturnNum": 10,
  41. "WaitTimeSpent": 0
  42. },
  43. "ChildOperators": [
  44. {
  45. ...
  46. },
  47. {
  48. ...
  49. }
  50. ]
  51. }
  52. }

MERGE 操作

详细的访问计划中,MERGE 对象对应一个数据节点上的主表查询上下文对象,其中展示的信息如下:

字段名类型描述
Operator字符串操作符的名称: “MERGE”
Sort字符串MERGE 需要保证输出结果有序的排序字段
NeedReorder布尔型MERGE 是否需要根据排序字段对多个子表的记录进行排序合并,当查询中包含排序,排序字段不包含主表的分区键时为 true
SubCollectionNum整型MERGE 涉及查询的子表个数
SubCollectionList数组MERGE 涉及查询的子表,按查询的执行顺序列出
SubCollectionList.Name字符串MERGE 发送查询的子表名称
SubCollectionList.EstTotalCost浮点数MERGE 发送的查询在子表上查询的估算时间(单位:秒)
SubCollectionList.QueryTimeSpent浮点数MERGE 发送的查询在子表上查询的执行时间(单位:秒),Run 选项为 true 时显示
SubCollectionList.WaitTimeSpent浮点数MERGE 发送的查询在数据节点上查询的等待时间(单位:秒),Run 选项为 true 时显示)
SelectorBSON 对象MERGE 执行的选择符
Skip长整型指定 MERGE 需要跳过的记录个数
Return长整型指定 MERGE 最多返回的记录个数
EstimateBSON 对象估算的 MERGE 代价信息,Estimate 选项为 true 时显示
Estimate.StartCost浮点型估算的 MERGE 的启动时间(单位:秒)
Estimate.RunCost浮点型估算的 MERGE 的运行时间(单位:秒)
Estimate.TotalCost浮点型估算的 MERGE 的结束时间(单位:秒)
Estimate.OutputBSON 对象估算的 MERGE 输出结果的统计信息,Filter 选项包含 “Output” 时显示
Estimate.Output.Records长整型估算的 MERGE 输出的记录个数
Estimate.Output.RecordSize整型估算的 MERGE 输出的记录平均字节数
Estimate.Output.Sorted布尔型MERGE 输出结果是否有序
RunBSON 对象实际执行 MERGE 的代价信息,Run 选项为 true 时显示
Run.ContextID长整型MERGE 执行的上下文 ID
Run.StartTimestamp字符串MERGE 执行启动的时间戳
Run.QueryTimeSpent浮点型MERGE 执行耗时(单位:秒)
Run.GetMores长整型请求 MERGE 返回结果集的次数
Run.ReturnNum长整型MERGE 返回记录个数
SubCollections数组MERGE 的子操作(每个子表返回的查询的访问计划结果),详细请参考:数据节点的访问计划

示例:

  1. {
  2. ...,
  3. "PlanPath": {
  4. "Operator": "MERGE",
  5. "Sort": {
  6. "h": 1
  7. },
  8. "NeedReorder": true,
  9. "SubCollectionNum": 2,
  10. "SubCollectionList": [
  11. {
  12. "Name": "subcs.subcl1",
  13. "EstTotalCost": 0.8277414999999999,
  14. "QueryTimeSpent": 1.080046,
  15. "WaitTimeSpant": 0.000234
  16. },
  17. {
  18. "Name": "subcs.subcl2",
  19. "EstTotalCost": 0.8277414999999999,
  20. "QueryTimeSpent": 0.946832,
  21. "WaitTimeSpant": 0.000182
  22. }
  23. ],
  24. "Selector": {},
  25. "Skip": 0,
  26. "Return": -1,
  27. "Estimate": {
  28. "StartCost": 1.630483,
  29. "RunCost": 0.09999999999999999,
  30. "TotalCost": 1.730483,
  31. "Output": {
  32. "Records": 50000,
  33. "RecordSize": 43,
  34. "Sorted": true
  35. }
  36. },
  37. "Run": {
  38. "ContextID": 63121,
  39. "StartTimestamp": "2017-12-11-16.18.00.789234",
  40. "QueryTimeSpent": 1.203218,
  41. "GetMores": 3,
  42. "ReturnNum": 50000
  43. },
  44. "SubCollections": [
  45. {
  46. ...
  47. },
  48. {
  49. ...
  50. }
  51. ]
  52. }
  53. }

SORT 操作

详细的访问计划中,SORT 对象对应一个数据节点上的排序上下文对象,其中展示的信息如下:

字段名类型描述
Operator字符串操作符的名称: “SORT”
SortBSON 对象SORT 执行的排序字段
SelectorBSON 对象SORT 执行的选择符
Skip长整型指定 SORT 需要跳过的记录个数
Return长整型指定 SORT 最多返回的记录个数
EstimateBSON 对象估算的 SORT 代价信息,Estimate 选项为 true 时显示
Estimate.StartCost浮点型估算的 SORT 的启动时间(单位:秒)
Estimate.RunCost浮点型估算的 SORT 的运行时间(单位:秒)
Estimate.TotalCost浮点型估算的 SORT 的结束时间(单位:秒)
Estimate.SortType字符串SORT 估算的排序类型:1. “InMemory” 为内存排序;2. “External” 为外存排序
Estimate.OutputBSON 对象估算的 SORT 输出的统计信息,Filter 选项包含 “Output” 时显示
Estimate.Output.Records长整型估算的 SORT 输出的记录个数
Estimate.Output.RecordSize整型估算的 SORT 输出的记录平均字节数
Estimate.Output.Sorted布尔型SORT 输出是否有序,对 SORT 为 true
RunBSON 对象实际查询的 SORT 代价信息,Run 选项为 true 时显示
Run.ContextID长整型SORT 执行的上下文 ID
Run.StartTimestamp字符串SORT 启动的时间
Run.QueryTimeSpent浮点型SORT 耗时(单位:秒)
Run.GetMores长整型请求 SORT 返回结果集的次数
Run.ReturnNum长整型SORT 返回记录个数
Run.SortType字符串SORT 执行的排序类型: 1. “InMemory” 为内存排序; 2. “External” 为外存排序
ChildOperators数组SORT 的子操作(TBSCAN 或 IXSCAN)

示例:

  1. {
  2. ...,
  3. "PlanPath": {
  4. "Operator": "SORT",
  5. "Sort": {
  6. "c": 1
  7. },
  8. "Selector": {},
  9. "Skip": 0,
  10. "Return": -1,
  11. "Estimate": {
  12. "StartCost": 0.475,
  13. "RunCost": 5e-7,
  14. "TotalCost": 0.4750005,
  15. "SortType": "InMemory",
  16. "Output": {
  17. "Records": 1,
  18. "RecordSize": 43,
  19. "Sorted": true
  20. }
  21. },
  22. "Run": {
  23. "ContextID": 8,
  24. "StartTimestamp": "2017-11-29-14.02.38.108504",
  25. "QueryTimeSpent": 0.050564,
  26. "GetMores": 1,
  27. "ReturnNum": 5,
  28. "SortType": "InMemory"
  29. },
  30. "ChildOperators": [
  31. {
  32. ...
  33. }
  34. ]
  35. }
  36. }

TBSCAN 操作

详细的访问计划中,TBSCAN 对应一个使用全表扫描的上下文对象,展示的信息如下:

字段名类型描述
Operator字符串操作符的名称: “TBSCAN”
Collection字符串TBSCAN 访问的集合名字
QueryBSON 对象TBSCAN 执行的匹配符
SelectorBSON 对象TBSCAN 执行的选择符
Skip长整型指定 TBSCAN 需要跳过的记录个数
Return长整型指定 TBSCAN 最多返回的记录个数
EstimateBSON 对象估算的 TBSCAN 代价信息,Estimate 选项为 true 时显示
Estimate.StartCost浮点型估算的 TBSCAN 的启动时间(单位:秒)
Estimate.RunCost浮点型估算的 TBSCAN 的运行时间(单位:秒)
Estimate.TotalCost浮点型估算的 TBSCAN 的结束时间(单位:秒)
Estimate.CLEstFromStat布尔型TBSCAN 是否使用集合的统计信息进行估算
Estimate.CLStatTime字符串TBSCAN 使用的集合的统计信息的生成时间
Estimate.InputBSON 对象估算的 TBSCAN 输入的统计信息,Filter 选项包含 “Input” 时显示
Estimate.Input.Pages长整型估算的 TBSCAN 输入的数据页数
Estimate.Input.Records长整型估算的 TBSCAN 输入的记录个数
Estimate.Input.RecordSize整型估算的 TBSCAN 输入的记录平均字节数
Estimate.FilterBSON 对象估算的 TBSCAN 进行过滤的信息,Filter 选项包含 “Filter” 时显示
Estimate.Filter.MthSelectivity浮点型估算的 TBSCAN 使用匹配符进行过滤的选择率
Estimate.OutputBSON 对象估算的 TBSCAN 输出的统计信息,Filter 选项包含 “Output” 时显示
Estimate.Output.Records长整型估算的 TBSCAN 输出的记录个数
Estimate.Output.RecordSize整型估算的 TBSCAN 输出的记录平均字节数
Estimate.Output.Sorted布尔型TBSCAN 输出是否有序,对 TBSCAN 为 false
RunBSON 对象实际执行 TBSCAN 的代价信息,Run 选项为 true 时显示
Run.ContextID长整型TBSCAN 执行的上下文标识
Run.StartTimestamp字符串TBSCAN 执行启动的时间戳
Run.QueryTimeSpent浮点型TBSCAN 执行耗时(单位:秒)
Run.GetMores长整型请求 TBSCAN 返回结果集的次数
Run.ReturnNum长整型TBSCAN 返回记录个数
Run.ReadRecords长整型TBSCAN 扫描记录个数

示例:

  1. {
  2. ...,
  3. "PlanPath": {
  4. "Operator": "TBSCAN",
  5. "Collection": "sample.employee",
  6. "Query": {
  7. "$and": []
  8. },
  9. "Selector": {},
  10. "Skip": 0,
  11. "Return": -1,
  12. "Estimate": {
  13. "StartCost": 0,
  14. "RunCost": 0.45,
  15. "TotalCost": 0.45,
  16. "CLEstFromStat": false,
  17. "Input": {
  18. "Pages": 25,
  19. "Records": 25000,
  20. "RecordSize": 43
  21. },
  22. "Filter": {
  23. "MthSelectivity": 1
  24. },
  25. "Output": {
  26. "Records": 25000,
  27. "RecordSize": 43,
  28. "Sorted": false
  29. }
  30. },
  31. "Run": {
  32. "ContextID": 63123,
  33. "StartTimestamp": "2017-12-11-16.18.00.789831",
  34. "QueryTimeSpent": 0.040438,
  35. "GetMores": 25,
  36. "ReturnNum": 25000,
  37. "ReadRecords": 25000
  38. }
  39. }
  40. }

IXSCAN 操作

详细的访问计划中,IXSCAN 对应一个使用索引扫描的上下文对象,展示的信息如下:

字段名类型描述
Operator字符串操作符的名称: “IXSCAN”
Collection字符串IXSCAN 访问集合的名字
Index字符串IXSCAN 访问索引的名字
IXBoundBSON 对象IXSCAN 访问索引的查找范围
QueryBSON 对象IXSCAN 执行的匹配符
NeedMatch布尔型IXSCAN 是否需要在数据上执行匹配符进行过滤
SelectorBSON 对象IXSCAN 执行的选择符
Skip长整型指定 IXSCAN 需要跳过的记录个数
Return长整型指定 IXSCAN 最多返回的记录个数
EstimateBSON 对象估算的 IXSCAN 代价信息,Estimate 选项为 true 时显示
Estimate.StartCost浮点型估算的 IXSCAN 的启动时间(单位:秒)
Estimate.RunCost浮点型估算的 IXSCAN 的运行时间(单位:秒)
Estimate.TotalCost浮点型估算的 IXSCAN 的结束时间(单位:秒)
Estimate.CLEstFromStat布尔型IXSCAN 是否使用集合的统计信息进行估算
Estimate.CLStatTime时间戳IXSCAN 使用的集合的统计信息的生成时间
Estimate.IXEstFromStat布尔型IXSCAN 是否使用索引的统计信息进行估算
Estimate.IXStatTime时间戳IXSCAN 使用的索引的统计信息的生成时间
Estimate.InputBSON 对象估算的 IXSCAN 输入的统计信息,Filter 选项包含 “Input” 时显示
Estimate.Input.Pages长整型估算的 IXSCAN 输入的数据页数
Estimate.Input.Records长整型估算的 IXSCAN 输入的记录个数
Estimate.Input.RecordSize整型估算的 IXSCAN 输入的记录平均字节数
Estimate.Input.IndexPages整型估算的 IXSCAN 输入的索引页数
Estimate.FilterBSON 对象估算的 IXSCAN 进行过滤的信息,Filter 选项包含 “Filter” 时显示
Estimate.Filter.MthSelectivity浮点型估算的 IXSCAN 使用匹配符进行过滤的选择率
Estimate.Filter.IXScanSelectivity浮点型估算的 IXSCAN 使用索引时需要扫描索引的比例
Estimate.Filter.IXPredSelectivity浮点型估算的 IXSCAN 使用索引进行过滤的选择率
Estimate.OutputBSON 对象估算的 IXSCAN 输出的统计信息,Filter 选项包含 “Output” 时显示
Estimate.Output.Records长整型估算的 IXSCAN 输出的记录个数
Estimate.Output.RecordSize整型估算的 IXSCAN 输出的记录平均字节数
Estimate.Output.Sorted布尔型IXSCAN 输出是否有序,如果索引包含 Sort 的所有字段并且匹配顺序,该项为 true,否则为 false
RunBSON 对象实际查询的 IXSCAN 代价信息,Run 选项为 true 时显示
Run.ContextID长整型IXSCAN 执行的上下文 ID
Run.StartTimestamp字符串IXSCAN 启动的时间
Run.QueryTimeSpent浮点型IXSCAN 耗时(单位:秒)
Run.GetMores长整型请求 IXSCAN 返回结果集的次数
Run.ReturnNum长整型IXSCAN 返回记录个数
Run.ReadRecords长整型IXSCAN 扫描数据记录个数
Run.IndexReadRecords长整型IXSCAN 扫描索引项个数

示例:

  1. {
  2. ...,
  3. "PlanPath": {
  4. "Operator": "IXSCAN",
  5. "Collection": "sample.employee",
  6. "Index": "index",
  7. "IXBound": {
  8. "a": [
  9. [
  10. 1,
  11. 1
  12. ]
  13. ]
  14. },
  15. "Query": {
  16. "$and": [
  17. {
  18. "a": {
  19. "$et": 1
  20. }
  21. }
  22. ]
  23. },
  24. "NeedMatch": false,
  25. "Selector": {},
  26. "Skip": 0,
  27. "Return": -1,
  28. "Estimate": {
  29. "StartCost": 5e-7,
  30. "RunCost": 0.3200035,
  31. "TotalCost": 0.320004,
  32. "CLEstFromStat": false,
  33. "IXEstFromStat": false,
  34. "Input": {
  35. "Pages": 25,
  36. "Records": 25000,
  37. "RecordSize": 43,
  38. "IndexPages": 15
  39. },
  40. "Filter": {
  41. "MthSelectivity": 0.00004,
  42. "IXScanSelectivity": 0.00004,
  43. "IXPredSelectivity": 0.00004,
  44. },
  45. "Output": {
  46. "Records": 1,
  47. "RecordSize": 43,
  48. "Sorted": false
  49. }
  50. },
  51. "Run": {
  52. "ContextID": 36136,
  53. "StartTimestamp": "2017-12-11-16.11.34.518111",
  54. "QueryTimeSpent": 0.935198,
  55. "GetMores": 1,
  56. "ReturnNum": 5,
  57. "ReadRecords": 5,
  58. "IndexReadRecords": 6
  59. }
  60. }
  61. }