【量子开发者必看】VSCode Jupyter内核配置避坑指南:90%人忽略的4个关键点
2025/12/17 18:01:50
全集合扫描(Collection Scan)MongoDB执行查询时,若目标字段未创建索引,会触发全集合扫描——即遍历集合中所有文档,逐一匹配查询条件。
弊端随数据量增长呈指数级放大:排序操作需先全扫描加载所有数据到内存,若数据量超过内存限制,会触发磁盘临时文件排序,性能骤降。索引是MongoDB中提升查询效率的核心手段,本质是“有序的数据结构(B树)”,核心价值包括:
查询耗时从“秒级”降至“毫秒级”;_id索引);(更准确的是B+树变体),B树的核心优势是“平衡”——所有叶子节点到根节点的路径长度一致,且支持多路查找,大幅减少磁盘IO次数(磁盘IO是数据库性能瓶颈的核心)。_id字段创建唯一索引(id),保证每个文档的_id唯一且可快速查询,该索引无法删除。以下实操基于Mongo Shell完成(可无缝适配Node.js/Python等驱动),核心是通过对比“无索引/有索引”的查询效率,理解索引的价值。
// 1. 切换到测试数据库use test_db;// 2. 删除已有集合(避免干扰)db.user_info.drop();// 3. 插入10万条测试数据(模拟用户信息)let userData=[];for(let i=0;i<100000;i++){userData.push({name:`user_${i}`,age:Math.floor(Math.random()*50)+18,// 18-68岁phone:`138${String(Math.floor(Math.random() * 100000000)).padStart(8, '0')}`,register_time:newDate(Date.now()-Math.floor(Math.random()*365*24*3600*1000