您的位置:首页 > 游戏 > 手游 > 扮家家室内设计网_广告发布者是指_成人计算机速成培训班_淘宝标题优化网站

扮家家室内设计网_广告发布者是指_成人计算机速成培训班_淘宝标题优化网站

2025/1/8 19:10:52 来源:https://blog.csdn.net/hzether/article/details/144941381  浏览:    关键词:扮家家室内设计网_广告发布者是指_成人计算机速成培训班_淘宝标题优化网站
扮家家室内设计网_广告发布者是指_成人计算机速成培训班_淘宝标题优化网站

第4章:MongoDB索引

4.1 索引基础

4.1.1 索引的重要性

  • 提高查询性能
  • 减少集合扫描
  • 支持高效排序

4.1.2 默认索引

// _id字段的默认索引
{"_id": ObjectId("..."),"name": "示例文档"
}

4.2 索引类型

4.2.1 单字段索引

// 创建单字段索引
db.users.createIndex({username: 1})  // 升序
db.users.createIndex({username: -1}) // 降序// 查看集合索引
db.users.getIndexes()

4.2.2 复合索引

// 创建复合索引
db.users.createIndex({lastName: 1, firstName: 1
})// 复合索引查询
db.users.find().sort({lastName: 1, firstName: 1
})

4.2.3 唯一索引

// 创建唯一索引
db.users.createIndex({email: 1}, {unique: true}
)// 部分唯一索引
db.users.createIndex({username: 1},{unique: true,partialFilterExpression: {age: {$gt: 18}}}
)

4.2.4 文本索引

// 创建文本索引
db.articles.createIndex({content: "text"},{weights: {content: 10,tags: 5},name: "content_text_index"}
)// 文本搜索
db.articles.find({$text: {$search: "MongoDB 数据库"}
})

4.2.5 地理空间索引

// 创建2dsphere索引
db.places.createIndex({location: "2dsphere"})// 地理位置查询
db.places.find({location: {$near: {$geometry: {type: "Point",coordinates: [116.4, 39.9]},$maxDistance: 1000}}
})

4.3 索引性能分析

4.3.1 查询执行计划

// 分析查询性能
db.users.find({username: "example"}).explain("executionStats")// 查看索引使用情况
db.users.find({username: "example"}).hint({username: 1})

4.3.2 索引选择策略

// 创建复合索引
db.products.createIndex({category: 1, price: -1
})// 高效查询
db.products.find({category: "电子产品",price: {$gt: 1000}
}).sort({price: -1})

4.4 索引管理

4.4.1 索引操作

// 删除指定索引
db.users.dropIndex({username: 1})// 删除所有索引(除_id)
db.users.dropIndexes()// 重建索引
db.users.reIndex()

4.4.2 后台创建索引

// 后台创建索引(不阻塞写操作)
db.users.createIndex({username: 1}, {background: true}
)

4.5 常见索引问题

4.5.1 索引开销

  • 写入性能下降
  • 额外存储空间
  • 定期评估和调整

4.5.2 最佳实践

  1. 仅为常用查询创建索引
  2. 避免过多索引
  3. 使用复合索引替代多个单字段索引
  4. 定期分析和优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com