多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 索引创建的注意事项 > 当如果数据量比较大时,最好使用后端方式进行创建,不然会阻塞mongodb的读写操作,就很悲剧了。 > db.col.createIndex({"filed":1}, {background:true}); ### 索引的性能检查 > db.col."sql".explain("executionStats"); > 结果中: > winningPlan:最佳匹配的索引。 > docsExamined:1000,检查了1000个文档 > nReturned:13,匹配到了13个文档 > executionTimeMillis:当前查询所需时间,毫秒数 > indexBounds:当前查询具体使用的索引 ### 索引的管理 > 查询所有索引 ``` db.col.getIndexes() ``` > 删除所有索引 ``` db.col.dropIndexes() ``` > 删除 firstname 索引 ``` db.col.dropIndex({"firstname": 1}) ``` ### 索引的分类 #### 1. 单键索引 > 索引创建:db.col.createIndex({"filed":1 or -1}) > 查询语句:do.col.find({"field":"wangkun"}) > 1为升序,-1 为降序 #### 2. 唯一索引 > 当插入相同的值时候会报错,以保证数据的唯一性 > 索引创建:db.col.ensureIndex({"field": 1}, {unique: true}); > 查询语句:do.col.find({"field":"wangkun"}) #### 3. 复合索引 > 索引创建:db.col.createIndex({"field1":1,"field2":-1}) > 查询语句:db.col.find({"field1":"value","field2":"value"}) > 可以用field1做前缀进行查询 > 也可以用field1 + field2 进行查询 > 切勿使用field2 + field1 进行查询 #### 4. 多键值索引 > 索引创建:db.col.createIndex({"array filed":1 or -1}) > 查询语句:do.col.find({"array field":122}) #### 5. HASH索引 > 索引创建:db.col.createIndex({"filed":"hashed"}) > 查询语句:do.col.find({"field":"wangxi"}) > 定值查找,o(1) 时间消耗 #### 6. 局部索引 > 局部索引可以 节约存储空间 和 性能消耗。 > 比如 年龄大于10岁的数据都进行索引 > 索引创建:db.col.createIndex({"age":1}, {partialFilterExpression:{"age":{$gt:10}}}}) > 查询语句:do.col.find({"age":22})