第六课 MongoDB 索引
2015-10-10 20:48
375 查看
1.课程大纲
![](https://img-blog.csdn.net/20151010201957754?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151010205321185?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
本课时首先会介绍索引的概念,然后会详细介绍索引的类型,将重点介绍单字段索引、复合索引、多键索引以及哈希索引的概念以及使用时需要注意的事项,最后将演示如何使用这些索引。
1.MongoDB 索引的类型
2.MongoDB 索引的属性
3.MongoDB 索引的管理
2.课程简介
首先来看数据库索引的基本概念,数据库索引是对数据表中一列或多列的值进行排序的一种数据结构,使用索引可以快速访问数据库表中的特定信息。
数据库索引与书籍索引的功能类似,书籍有了索引就不需要翻查整本书,数据库借助索引可以先在索引中查找,在索引中找到条目后,就可以直接跳转到目标文档的位置,这能够使查找速度提高几个数量级。
不使用索引的查询称为全表扫描,也就是说服务器必须将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这个处理过程与我们在一本没有索引的书中查找信息很像:从第一页开始一直读完整本书,查完一整本书才能找到要查询的结果。通常来说,应该尽量避免全表扫描,因为对于大集合来说,全表扫描的效率非常低。我们应该在集合中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的指针快速找到表中对应的记录。下面来看MongoDB中的索引。
MongoDB 索引几乎和关系型数据库的索引一样,绝大数优化关系型数据库索引的技巧同样适用于MongoDB。因为索引数据使用的数据结构大体是相同的,它们都支持单字段索引、复合索引,地理空间索引以及全文索引等。但它们又有所不同,例如,由于MongoDB 可以存储数组类型的数据,它可以为数组元素建立多键索引。此外,MongoDB
中稀疏索引的概念与关系型数据库也有是不同的。
使用索引除了可以提高查询速度外,还可以节省排序时需要的内存资源。在上节课介绍 MongoDB 游标时已经提到,MongoDB 的查询结果是分批来返回的,但是如果要对查询结果进行排序的话,所有的查询结果都需要加载到内存中,当结果集很大时,会严重的消耗内存。所以,如果在经常需要排序的字段上建立索引的话,就不用在内存中进行排序,这样不仅可以提高查询的效率而且还可以提高内存的利用率。
MongoDB 将所有的索引信息保存到 system.indexes 集合中,数据库默认为为集合的_id字段创建索引。在 MongoDB Shell 中使用这条 find 命令,来查看数据库中创建的所有索引。
MongoDB 提供了多样性的索引支持,可以创建多种类型的索引,包括单字段索引、复合索引、多键索引、哈希索引等,而且针对每种类型的索引还可以设置不同的属性,能够实现更多复杂的功能。
3.详细课程视频
视频课程链接如下:[MongoDB
索引]
本课时首先会介绍索引的概念,然后会详细介绍索引的类型,将重点介绍单字段索引、复合索引、多键索引以及哈希索引的概念以及使用时需要注意的事项,最后将演示如何使用这些索引。
1.MongoDB 索引的类型
2.MongoDB 索引的属性
3.MongoDB 索引的管理
2.课程简介
首先来看数据库索引的基本概念,数据库索引是对数据表中一列或多列的值进行排序的一种数据结构,使用索引可以快速访问数据库表中的特定信息。
数据库索引与书籍索引的功能类似,书籍有了索引就不需要翻查整本书,数据库借助索引可以先在索引中查找,在索引中找到条目后,就可以直接跳转到目标文档的位置,这能够使查找速度提高几个数量级。
不使用索引的查询称为全表扫描,也就是说服务器必须将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这个处理过程与我们在一本没有索引的书中查找信息很像:从第一页开始一直读完整本书,查完一整本书才能找到要查询的结果。通常来说,应该尽量避免全表扫描,因为对于大集合来说,全表扫描的效率非常低。我们应该在集合中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的指针快速找到表中对应的记录。下面来看MongoDB中的索引。
MongoDB 索引几乎和关系型数据库的索引一样,绝大数优化关系型数据库索引的技巧同样适用于MongoDB。因为索引数据使用的数据结构大体是相同的,它们都支持单字段索引、复合索引,地理空间索引以及全文索引等。但它们又有所不同,例如,由于MongoDB 可以存储数组类型的数据,它可以为数组元素建立多键索引。此外,MongoDB
中稀疏索引的概念与关系型数据库也有是不同的。
使用索引除了可以提高查询速度外,还可以节省排序时需要的内存资源。在上节课介绍 MongoDB 游标时已经提到,MongoDB 的查询结果是分批来返回的,但是如果要对查询结果进行排序的话,所有的查询结果都需要加载到内存中,当结果集很大时,会严重的消耗内存。所以,如果在经常需要排序的字段上建立索引的话,就不用在内存中进行排序,这样不仅可以提高查询的效率而且还可以提高内存的利用率。
MongoDB 将所有的索引信息保存到 system.indexes 集合中,数据库默认为为集合的_id字段创建索引。在 MongoDB Shell 中使用这条 find 命令,来查看数据库中创建的所有索引。
MongoDB 提供了多样性的索引支持,可以创建多种类型的索引,包括单字段索引、复合索引、多键索引、哈希索引等,而且针对每种类型的索引还可以设置不同的属性,能够实现更多复杂的功能。
3.详细课程视频
视频课程链接如下:[MongoDB
索引]
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 如何在 Fedora 上安装 MongoDB 服务器
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 如何在 Ubuntu 上安装 MongoDB
- PostgreSQL教程(八):索引详解
- Oracle外键不加索引引起死锁示例
- oracle 索引的相关介绍(创建、简介、技巧、怎样查看) .
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- 用SQL建立索引的方法步骤
- SQL效率提升之一些SQL编写建议并有效利用索引
- SQLSERVER的非聚集索引结构深度理解
- SQL Server误区30日谈 第8天 有关对索引进行在线操作的误区
- SQL Server 索引介绍
- SqlServer 索引自动优化工具
- mysql 中存在null和空时创建唯一索引的方法
- 详解sqlserver查询表索引
- 优化 SQL Server 索引的小技巧
- sqlserver 索引的一些总结
- mysql中索引使用不当速度比没加索引还慢的测试