面试题答案
一键面试索引对多文档更新性能的影响
- 减少扫描数据量:索引能够帮助 MongoDB 快速定位到符合条件的文档,而无需全表扫描。在多文档更新中,若有合适的索引,数据库能迅速找到需要更新的文档,从而提升更新效率。
- 优化查询执行计划:合适的索引能引导 MongoDB 选择更优的查询执行计划,使得更新操作在更高效的路径下执行。
针对批量更新年龄字段的索引设计
- 单字段索引:由于是批量更新年龄字段,最直接的方式是在
age
字段上创建单字段索引。可以使用以下命令创建:
db.users.createIndex( { age: 1 } )
这样在更新年龄字段时,MongoDB 可以利用这个索引快速定位到需要更新的文档,提升更新性能。
2. 复合索引(若有其他查询条件):如果在更新年龄字段时,还会结合其他字段(如地址)来筛选文档进行更新,例如要更新住在特定地址且年龄满足一定条件的用户的年龄,可以创建复合索引。假设结合地址字段 address
创建复合索引:
db.users.createIndex( { address: 1, age: 1 } )
复合索引中字段顺序很重要,一般将选择性高(区分度大)的字段放在前面。在此例中,如果地址的区分度较大,就将其放在前面,这样可以更有效地缩小扫描范围,优化多文档更新操作。