索引

如果查询的文档记录非常多,查询速度会很慢,和关系型数据库一样,MongoDB中也可以为经常需要查询的字段建立索引,在MongoDB中使用的索引数据结构是B树,使用注意点和MySQL都差不多,_id字段也默认具有唯一索引。当然,建立索引则会让插入和更新效率变低,因为修改数据时需要同时维护索引。总的来说,MongoDB索引的使用规则基本可以套用RDBMS。

这里我们向MongoDB中插入一百万条数据用作测试。

for (i=0; i<1000000; i++) {
    db.users.insert(
        {
            "i" : i,
            "username" : "user"+i,
            "age" : Math.floor(Math.random()*120),
            "created" : new Date()
        }
    );
};

不建立索引时,使用查询db.users.find({"username": "user101"}),可以明显感觉到查询速度是比较慢的。

注:我们可以使用explain()函数查看详细的查询计划。

建立索引

下面我们为username字段建立索引,createIndex中指定建立索引的字段,1代表升序索引。

db.users.createIndex({"username": 1})

再次查询,我们能够明显感觉到结果返回的非常快。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。