MongoDB中常见的索引有单字段索引和复合索引.
单字段索引
没有索引的查询
>db.users.find({username:"user0115"}).explain(true)
//以下是其中的一部分, 可以看到docsExamined为100W,即扫描了所有的文档, 查询时间为executionTimeMillis为318ms
//db.users.find({username:"user123456"}).explain(true).executionStats.executionTimeMillis 可以直接查看花费的时间
"executionStats" : {
.....
"executionSuccess" : true,
"executionTimeMillis" : 318,
"nReturned" : 1,
"totalDocsExamined" : 1000000,
"totalKeysExamined" : 0
.....
}
建立索引
这次我们对username新建一个索引, 1表示增序排列:
>db.users.ensureIndex({
"username":1})
索引分析
db.users.find({username:"user0115"}).explain(true)
//返回如下, 其中indexName表示使用到了这个索引, executionTimeMillis为0ms,totalDocsExamined为1, 只扫描了1个文档, 改变非常的大
....
"indexName" : "username_1",
"indexVersion" : 1