mongodb 索引创建、查询分析

索引可以加快速度读取,在写入、删除、更新的时候,会受到影响,因为在执行操作的时候,它们都会去读取索引,实际应用中有时候为了加快访问速度, 牺牲掉增删改的一点性能,还是有必要的,具体选择,根据实际使用业务场景,建立合适的索引。

// 添加索引
db.collection.createIndex({field: true})

// 未添加索引之前,会扫描整个集合, 显示COLLSCAN表示一组扫描,显示IXSCAN指示索引使用。

//explain() 查询分析器, 下面type未加索引
 db.inventory.find({type:'food'}).explain();

结果如下:
db.inventory.find({type:'food'}).explain();
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "MyDB.inventory",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "type" : {
                                "$eq" : "food"
                        }
                },
                "winningPlan" : {
                        "stage" : "COLLSCAN",
                        "filter" : {
                                "type" : {
                                        "$eq" : "food"
                                }
                        },
                        "direction" : "forward"
                },
                "rejectedPlans" : [ ]
        },
        "serverInfo" : {
                "host" : "DESKTOP-U0M7P28",
                "port" : 27017,
                "version" : "3.2.10",
                "gitVersion" : "79d9b3ab5ce20f51c272b4411202710a082d0317"
        },
        "ok" : 1
}

这里写图片描述

type字段创建一个索引
db.inventory.createIndex({ type: true })

// 在使用查询语句
db.inventory.find({ type : 'food'}).explain()

// 分析结果
 db.inventory.find({ type : 'food'}).explain();
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "MyDB.inventory",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "type" : {
                                "$eq" : "food"
                        }
                },
                "winningPlan" : {
                        "stage" : "FETCH",
                        "inputStage" : {
                                "stage" : "IXSCAN",
                                "keyPattern" : {
                                        "type" : true
                                },
                                "indexName" : "type_true",
                                "isMultiKey" : false,
                                "isUnique" : false,
                                "isSparse" : false,
                                "isPartial" : false,
                                "indexVersion" : 1,
                                "direction" : "forward",
                                "indexBounds" : {
                                        "type" : [
                                                "[\"food\", \"food\"]"
                                        ]
                                }
                        }
                },
                "rejectedPlans" : [ ]
        },
        "serverInfo" : {
                "host" : "DESKTOP-U0M7P28",
                "port" : 27017,
                "version" : "3.2.10",
                "gitVersion" : "79d9b3ab5ce20f51c272b4411202710a082d0317"
        },
        "ok" : 1
}

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章