MongoDB:mongodb的索引操作

来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:19 点击:

对于数据库而言,无非就是增删改查,通常我们在项目应用中,READ操作又占50%以上的操作,客户往往对此也比较敏感,如果在这方面,效率上处理不好,往往是要遭后人唾弃的!所以这时就需要索引来发挥作用了,下面我们先看一下索引给我们带来的感官上的区别,然后我们再详细说说mongodb的索引操作!

一、首先,我们向数据库中插入10万条数据:

for(var i=0;i<100000;i++){
	var index=parseInt(i*Math.random());
	db.person.insert({"name":"jessonlv"+i,"age":i});
}

\

 

然后我们查找第一万条数据的数据,即名字为 jessonlv10000的。注意在此之前,我们没有为person建立索引,另外mongodb为我们提供了explain关键字,使我们可以进行分析操作。

db.person.find({"name":"jessonlv"+10000}).explain()
\

cursor :"BasicCursor"的意思是表查找的时候,采用的是表扫描,也就是顺序查找,呵呵,顺序查找。

nscanned:这个的意思是查找操作一共浏览了10万的数据(文档),也就是整个表的文档数量。有点感觉了吧。

millis:这是我们最关心的时间了,一共用了66毫秒。凑合!有点夸张,我们可以做的更好。

二、建立索引:

建立索引
db.person.ensureIndex({"name":1})
db.person.find({"name":"jessonlv"+10000}).explain()

\

 

建立索引后,我们再对比下建立索引之前的参数值,一共查找了一个文档,所用时间竟然是离谱的0(其实不可能是零了,只是速度太快了),至此,大家应该感受到这种冰火两重天了吧......

三、唯一索引

mongodb的操作是这样的:

db.person.ensureIndex({"name":1},{"unique":true})
重复的键是不能插入的

四、组合索引

组合索引
db.person.insert({"name":"je","age":26,"birthday":"1986-5-4"})
db.person.insert({"name":"jes","age":26,"birthday":"1986-4-4"})
db.person.insert({"name":"jess","age":26,"birthday":"1986-3-4"})
db.person.insert({"name":"jesso","age":26,"birthday":"1986-2-4"})
db.person.insert({"name":"jessonlv","age":26,"birthday":"1986-1-4"})

建立索引:
db.person.ensureIndex({"name":1,"birthday":1})
db.person.ensureIndex({"birthday":1,"name":1})
db.person.getIndexs()

\

在此,我们采用查询的时候,优化器会采用最优的索引去查询

db.person.find({"birthday":"1986-5-4","name":"jes"}).explain()
	
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • db2管理工具小结
  • DB2数据库的导出与导入(Windows客户端)
  • db2 CLP中如何换行
  • DB2查看表结构及所用表语句
  • DB2 · CREATE TABLESPACE
  • 使用DB2对象:创建模式、表和视图
  • DB2数据库逻辑卷的复制
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1