mongodb索引

作者: 我就是L | 来源:发表于2017-03-15 21:54 被阅读105次
  • 先题几个问题
  • 什么是索引?
  • 如何建立索引?
  • 如何选择建立索引的字段?
  • 如何强制使用索引?
  • 如何评估索引效率?

如果把数据库比做书籍,那么索引即是目录,无需全文查找,在索引中找到条目以后,直接可以跳转到文档,如果不使用索引的话必须每次进行全文扫描

可以使用db.collection.ensureIndex({_id:1})对_id字段建立索引

如果使用索引进行查询,通常结果也是按照索引序排列

如果对返回结果做了数量限制,通常把索引放在第一个位置

只有存在多个索引键时,方向才有意义

覆盖索引:如果查询的文档中仅仅返回索引字段,则没必要去查询真正的文档。

隐式索引:如果一个N个键的索引,那么可以免费得到前N个键按顺序组成的索引

$nin总是进行全表扫描

建立索引时,经常用来精确匹配对字段放在前面,范围匹配字段放在后面

$or 实际是使用两次查询,然后合并结果集

对嵌套文档建立索引db.collection.ensureIndex({'loc.city'})。对嵌套文档本身和嵌套文档某一字段建立索引是完全不同的。对子文档建立的索引只有在进行与子文档顺序相同的匹配时才会使用索引。

对数组建立索引实际上就是对数组对每一个字段建立索引,所以数组索引代价相当高

索引基数:集合中某字段拥有不同值的数量,基数越高索引通常越有用

索引的效率苹果:exlpain()

db.collection.find().exlpain();

cursor: 是否使用索引,以及使用哪个索引
n:最终返回的文档
nscannedObjects:按照索引指针去磁盘找文档的次数
nscanned:如果使用索引,为查询的索引条目数量;否则,为查询文档数量
scannedAndOrder:是否在内存中排序
indexOnly:覆盖索引
millis:执行好秒数
isMultikey:是否为多键索引

如果返回文档占总文档比例较大,那么不建议使用索引
如果返回文档占总文档比例较小,那么建议使用索引

唯一索引:db.collection.ensureIndex({_id:1},{unique:true})

复合唯一索引: 单键可以不同,但是组合必须不同

唯一索引会把null看作值,因此无法把多个缺少唯一索引的文档存起来。

稀疏索引:db.collection.ensureIndex({_id:1},{sparse:true}), 允许索引键不存在,但是提供了就必须思唯一的。

数据库的索引信息都存在system.index中

索引自定义名称:db.collection.ensureIndex({_id:1},{name:'lyf'})

删除索引:db.collection.dropIndex(name)

相关文章

  • 24.Mongodb的索引操作

    Mongodb的索引操作 学习目标 掌握 mongodb索引的创建,删除操作 掌握 mongodb查看索引的方法 ...

  • MongoDB索引二(九)

    MongoDB索引二(九) 接上篇MongoDB索引一

  • MongoDB学习报告(二)

    概述 MongoDB索引管理MongoDB查询优化 MongoDB索引管理 单键索引中的每一项都应该对应被索引文档...

  • MongoDB 索引 --- 2022-04-03

    本章介绍MongoDB索引,类似MYSQL,MongoDB也支持索引,区别是MongoDB支持对JSON结构的任意...

  • mongodb索引

    mongodb索引 http://www.runoob.com/mongodb/mongodb-indexing....

  • 【mongoDB】mongoDB组合索引创建

    mongoDB索引创建 testDB库,testColl表索引: 转换为创建语句: 参考 MongoDB 教程ht...

  • MongoDB 索引操作(2)

    前言 上一篇介绍了 MongoDB 的索引基本操作,包括了索引查看、创建、删除,具体可以参考:MongoDB 索引...

  • mongoDB入门二

    索引 索引能够使得MongoDB更高效得执行查询。如果没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个...

  • 128|MongDB 之索引

    https://github.com/qianjiahao/MongoDB/wiki/MongoDB之索引

  • mongo的索引

    MongoDB 索引 createIndex() 方法 MongoDB使用 createIndex() 方法来创建...

网友评论

    本文标题:mongodb索引

    本文链接:https://www.haomeiwen.com/subject/jwernttx.html