索引的限制:

索引名称不能超过128个字符

每个集合不能超过64个索引

复合索引不能超过31列

MongoDB 索引语法

db.collection.createIndex({ <field>: < 1 or -1 > })

db.collection.ensureIndex({ <field>: < 1 or -1 > })

db.collection.createIndex( { "filed": sort } )

db.collection.createIndex( { "filed": sort , "filed2": sort } )

db.tab.ensureIndex({"id":1})

db.tab.ensureIndex({"id":1} ,{ name:"id_ind"})

db.tab.ensureIndex({"id":1,"name":1},{background:1,unique:1})

db.tab.ensureIndex( { "id" : "hashed" })

创建索引(两种方法)

filed :为键列

sort :为排序。1 为升序;-1为降序。

创建单列索引

创建索引并给定索引名称

后台创建唯一的复合索引

创建哈希索引

(更多参数 看文章底部)

db.tab.indexStats( { index: "id_ind" } )

db.runCommand( { indexStats: "tab", index: "id_ind" } )

db.tab.getIndexes()

db.system.indexes.find()

(前2个似乎不能用,官方文档解释)

(not intended for production deployments)

查看索引

db.tab.totalIndexSize();

查看索引大小

db.tab.reIndex()

db.runCommand({reIndex:"tab"})

重建索引

db.tab.dropIndex(<indexname>)

db.tab.dropIndex("id_1")

db.tab.dropIndexes()

删除索引

<indexname>为getIndexes看到的索引名称

删除所有索引(注意!)

分析函数

db.tab.find({"name":"kk50000"}).explain()

查询name=”kk50000”的执行分析

db.tab.find({"name":"kk50000"}).explain("queryPlanner")

db.tab.find({"name":"kk50000"}).explain("Verbosity")

db.tab.find({"name":"kk50000"}).explain("executionStats")

db.tab.find({"name":"kk50000"}).explain("allPlansExecution")

这3种方法执行结果完全包括上面这种的结果

db.tab.find({"name":"kk50000"}).explain()  结果做分析:

"cursor" : "BasicCursor",

"isMultiKey" : false,

"n" : 1,

"nscannedObjects" : 966423,

"nscanned" : 966423,

"nscannedObjectsAllPlans" : 966423,

"nscannedAllPlans" : 966423,

"scanAndOrder" : false,

"indexOnly" : false,

"nYields" : 7555,

"nChunkSkips" : 0,

"millis" : 4677,

"server" : "kk-ad:27017",

"filterSet" : false

游标类型。BasicCurso(扫描), BtreeCursor(索引)

是否多键(组合)索引

返回行数

扫描行数

扫描行数

所有计划扫描的次数

所有计划扫描的次数

是否在内存中排序

耗时(毫秒)

服务器

MongoDB索引,性能分析相关推荐

  1. MongoDB查询性能分析

    explain()方法能够提供大量与查询相关的信息.对于速度比较慢的查询来说,它是最重要的性能分析工具之一.通过查看一个查询的explain()输出信息,可以知道查询使用了哪个索引,以及是如何使用的. ...

  2. 小编带你了解oracle使用索引和不使用索引性能分析

    首先准备一张百万条数据的表,这样分析数据差距更形象! 下面用分页表数据对表进行分析,根据EMP_ID 字段排序,使用索引和不使用索引性能差距! sql查询语法准备,具体业务根据具体表书写sql语法: ...

  3. oracle使用索引和不使用索引性能分析

    首先准备一张百万条数据的表,这样分析数据差距更形象! 下面用分页表数据对表进行分析,根据EMP_ID 字段排序,使用索引和不使用索引性能差距! sql查询语法准备,具体业务根据具体表书写sql语法: ...

  4. 索引-性能分析-查看SQL执行频次以及慢查询日志

    索引语法 1.创建索引时候 [UNIQUE | FULLTEXT] 关键字是可选的: 1)加上 UNIUQE 就是创建唯一索引(唯一索引,说明改字段不能出现重复数据): 2)加上FULLTEXT 创建 ...

  5. MongoDB查询性能分析—— explain 操作返回结果详解

    MongoDB 提供 db.collection.explain(), cursort.explain() 及 explain 命令获取查询计划及查询计划执行统计信息. explain 结果将查询计划 ...

  6. MySQL索引优化分析

    转载来源:https://www.cnblogs.com/itdragon/p/8146439.html MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学 ...

  7. MySQL联合索引性能比较

    在分析联合索引性能之前,温故下基础知识. 1 数据结构 1.1 B-树 一个m阶树满足以下条件: 每个节点至多拥有m颗子树: 根节点至少2颗子树(若存在子树的情况下): 非根节点至少拥有m/2颗子树, ...

  8. MySQL第12天:MySQL索引优化分析之性能优化案例实践

    MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...

  9. MySQL第11天:MySQL索引优化分析之性能分析

    MySQL索引优化分析之性能分析 一.MySQL Query Optimizer 二.MySQL常见瓶颈 三.Explain(执行计划) 1.什么是执行计划?          2.执行计划能干什么? ...

最新文章

  1. 【云计算】阿里云云计算专业认证考试
  2. python基础知识整理-python爬虫基础知识点整理
  3. oracle数据库复制mysql,MySQL/Oracle数据库,使用SQL快速复制表结构或数据
  4. 网易云信国际短信上线啦!
  5. opencv在android,OpenCV 在 Android 中的应用
  6. c语言学习-判断101-200之间有多少个素数,并输出所有素数及素数的个数
  7. MFC初探 —— 文件与文件夹的选择与拷贝
  8. 幕享 for Mac(全平台全设备投屏共享软件)中文版
  9. java第二天学习笔记
  10. 462.最少移动次数使数组元素相等II
  11. 硬盘分区之MBR讲解
  12. win10系统更新服务器太慢了,Win10易升更新系统很慢的解决方法
  13. Timesten Classic 18.1 建立缓存组
  14. pc端js获取当前经纬度_js获取用户当前地理位置(省、市、经纬度)
  15. iOS 堆栈获取异常分析
  16. 最新码支付源码+完整版+免挂监听回调+微信、支付宝、qq监控APP打包教程
  17. 华为p20支持手机云闪付吗_银联云闪付支持HuaweiPay
  18. html模板改成织梦模板教程,织梦教程:如何用dedecms织梦模板搭建网站?
  19. win7防火墙端口开放
  20. vmware虚拟机windows xp 登录后死掉不能修复的错误的解决

热门文章

  1. 负压式爬壁机器人_一种负压吸附式仿生爬壁机器人的制作方法
  2. Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作...
  3. 数据结构-堆 Java实现
  4. 3. 从零开始学CSRF
  5. oracle基础学习---------1
  6. Android学习笔记(八)
  7. Codechef之CodeCraft: IIIT Hyderabad
  8. 转载:ImportError: No module named ‘httplib‘
  9. 诗与远方:无题(七十)- 小熊熬夜记
  10. jsp标记之动作标记介绍