今天学习一下MongoDB数据库的索引.
因为养的鱼生病了,所以抽空晚上学习记录一下.
这里借用一下菜鸟教程的原文:
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。 这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
话不多说,索引的基本shell 命令如下:
// 建立索引 1. 版本3.0之前用 db.collectionName.ensureIndex({key:value}) 2. 版本3.0之后用 db.collectionName.createIndex({key:value})
// 查询索引 db.collectionName.getIndexes()
// 删除索引 db.collectionName.dropIndex("索引名称")
看一下在200万条数据下,索引的优化结果:
Tip:我故意从大概50000的位置找的一个数据,然后我在没有索引的情况下查一下看看
然后我这边给username设置为索引:
然后再次查询:
可以看到,查询速度快了200倍左右,这很致命
不过,我们也不能滥用索引,因为索引会消耗内存和硬盘资源的