快速入门
安装
基本操作
数据模型
SQL引擎
系统架构
数据库管理
连接器
驱动
参考手册
故障排除
SAC
版本信息
query.explain( [option] )
获取查询的访问计划。
| 参数名 | 参数类型 | 描述 | 是否必填 |
|---|---|---|---|
| option | json 对象 | 访问计划执行参数,目前有 Run 字段项,表示是否执行访问计划,true 表示执行访问计划,获取数据和时间信息,false 表示只获取访问计划的信息,并不执行。默认为 false。 | 否 |
| 字段名 | 类型 | 描述 |
|---|---|---|
| Name | string | 集合名。 |
| ScanType | string | 扫描方式。表扫描:“tbscan”;索引扫描:“ixscan”。 |
| IndexName | string | 使用索引的名称。 |
| UseExtSort | bool | 是否使用非索引排序。 |
| Query | Json | 解析后的用户查询条件。 |
| IXBound | Json | 索引的查找范围。 |
| NeedMatch | bool | 获取记录时是否需要根据Query进行过滤,其中 NeedMatch 为 false 的情况有: 1. 没有查询条件。 2. 查询条件可以被索引覆盖。 |
| NodeName | string | 节点名。 |
| GroupName | string | 复制组名。 |
| ReturnNum | int64 | 返回记录的数量。 |
| ElapsedTime | float64 | 查询耗时(秒)。 |
| IndexRead | int64 | 索引记录扫描条数。 |
| DataRead | int64 | 数据记录扫描条数。 |
| UserCPU | float64 | 用户态 CPU 使用时间(秒)。 |
| SysCPU | float64 | 内核态 CPU 使用时间(秒)。 |
| SubCollections | Json Array | 垂直分区表中各子表的访问计划。 |
Note:
如果集合经过 split 分布在多个复制组,访问计划会按照一组一记录的方式返回。
返回访问计划的游标,类型为 object 。
foo.bar 是一个水平分区集合,分布在两个分区组上。
> db.foo.bar.find({a:{$gt:1}}).explain( { Run: true } )
{
"Name": "foo.bar",
"ScanType": "ixscan",
"IndexName": "$shard",
"UseExtSort": false,
"Query": {
"$and": [
{
"a": {
"$gt": 1
}
}
]
},
"IXBound": {
"a": [
[
1,
{
"$maxElement": 1
}
]
]
},
"NeedMatch": false,
"NodeName": "hostname1:11830",
"GroupName": "group1",
"ReturnNum": 0,
"ElapsedTime": 0.000107,
"IndexRead": 0,
"DataRead": 0,
"UserCPU": 0,
"SysCPU": 0
}
{
"Name": "foo.bar",
"ScanType": "ixscan",
"IndexName": "$shard",
"UseExtSort": false,
"Query": {
"$and": [
{
"a": {
"$gt": 1
}
}
]
},
"IXBound": {
"a": [
[
1,
{
"$maxElement": 1
}
]
]
},
"NeedMatch": false,
"NodeName": "hostname2:11840",
"GroupName": "group2",
"ReturnNum": 0,
"ElapsedTime": 0.000104,
"IndexRead": 0,
"DataRead": 0,
"UserCPU": 0,
"SysCPU": 0
}
展开