当前位置: 首页 > news >正文

网站建设与网页设计期末考试中国建设银行登录入口

网站建设与网页设计期末考试,中国建设银行登录入口,企业做个网站多少钱,软件开发 网站开发哪个难文章目录 一、前言1.1 概述1.2 MongoDB索引使用B-Tree还是BTree#xff1f;1.3 B 树和 B 树的对比1.4 总结 二、索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引 三、索引的管理操作3.1 索引的查看3.2 索引的创建3.2.1 单字段索引3.2.2 复合索引 3.3 索引的移除3.3.1 指定索… 文章目录 一、前言1.1 概述1.2 MongoDB索引使用B-Tree还是BTree1.3 B 树和 B 树的对比1.4 总结 二、索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引 三、索引的管理操作3.1 索引的查看3.2 索引的创建3.2.1 单字段索引3.2.2 复合索引 3.3 索引的移除3.3.1 指定索引的移除3.3.2 所有索引的移除 四、 索引的使用4.1 执行计划4.2 涵盖的查询 一、前言 1.1 概述 索引支持在MongoDB中高效地执行查询。如果没有索引MongoDB必须执行全集合扫描即扫描集合中的每个文档以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的特别在处理大量的数据时查询可以要花费几十秒甚至几分钟这对网站的性能是非常致命的。如果查询存在适当的索引MongoDB可以使用该索引限制必须检查的文档数。索引是特殊的数据结构它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值按字段值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。此外MongoDB还可以使用索引中的排序返回排序结果。官网文档https://docs.mongodb.com/manual/indexes/ 1.2 MongoDB索引使用B-Tree还是BTree MongoDB索引在查看资料的时候有些地方说使用是B-Tree有些地方说是BTree 因此使用db.serverStatus()查看默认使用的存储引擎 db.serverStatus() ...storageEngine : {name : wiredTiger,supportsCommittedReads : true,supportsSnapshotReadConcern : true,readOnly : false,persistent : true}, ...可以看到MongoDB使用的存储引擎是wiredTiger而wiredTiger使用的是 B 树作为其存储结构。 而之所以有B-Tree还是BTree的争论可能是从 MongoDb 3.2 版本开始其使用了 WiredTiger 作为其默认的存储引擎。而MongoDb 3.2 版本之前可能使用 B 树作为存储的数据结构。 相关文档https://www.mongodb.com/zh-cn/docs/manual/core/wiredtiger/ 1.3 B 树和 B 树的对比 B 树 内部节点内部节点既存储键keys也存储值values。 叶子节点叶子节点存储键值对。 适用场景适合点查精确匹配和少量范围查询。 B 树 内部节点内部节点只存储键keys不存储值values。 叶子节点所有值values都存储在叶子节点中叶子节点之间形成一个有序的链表。 适用场景适合范围查询和顺序访问 1.4 总结 B树的树内存储数据因此查询单条数据的时候B树的查询效率不固定最好的情况是O(1)。我们可以认为在做单一数据查询的时候使用B树平均性能更好。但是由于B树中各节点之间没有指针相邻因此B树不适合做一些数据遍历操作。 B树的数据只出现在叶子节点上因此在查询单条数据的时候查询速度非常稳定。因此在做单一数据的查询上其平均性能并不如B树。但是B树的叶子节点上有指针进行相连因此在做数据遍历的时候只需要对叶子节点进行遍历即可这个特性使得B树非常适合做范围查询。 参考文章 https://www.cnblogs.com/rjzheng/p/12316685.html https://zhuanlan.zhihu.com/p/519658576 二、索引的类型 2.1 单字段索引 MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引称为单字段索引Single Field Index。 对于单个字段索引和排序操作索引键的排序顺序即升序或降序并不重要因为MongoDB可以在任何方向上遍历索引 2.2 复合索引 MongoDB还支持多个字段的用户定义索引即复合索引Compound Index。 复合索引中列出的字段顺序具有重要意义。例如如果复合索引由 { userid: 1, score: -1 } 组成则索引首先按userid正序排序然后在每个userid的值内再在按score倒序排序。 2.3 其他索引 地理空间索引Geospatial Index、文本索引Text Indexes、哈希索引Hashed Indexes。 地理空间索引Geospatial Index 为了支持对地理空间坐标数据的有效查询MongoDB提供了两种特殊的索引返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引。 文本索引Text Indexes MongoDB提供了一种文本索引类型支持在集合中搜索字符串内容。这些文本索引不存储特定于语言的停止词例如“the”、“a”、“or”而将集合中的词作为词干只存储根词。 哈希索引Hashed Indexes 为了支持基于散列的分片MongoDB提供了散列索引类型它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机但只支持相等匹配不支持基于范围的查询。 注意 当查询条件比较多同时要提高性能时使用复合索引 索引也是一个小集合会占用空间如果创建很多索引会影响插入效率。 三、索引的管理操作 3.1 索引的查看 说明 返回一个集合中的所有索引的数组。 语法 db.collection.getIndexes()注意该语法命令运行要求是MongoDB 3.0 【示例】 查看comment集合中所有的索引情况 db.comment.getIndexes() [{v : 2,key : {_id : 1},name : _id_,ns : articledb.comment} ]结果中显示的是默认 _id 索引。 默认_id索引 MongoDB在创建集合的过程中在 _id 字段上创建一个唯一的索引默认名字为 id 该索引可防止客户端插入两个具有相同值的文档您不能在_id字段上删除此索引。 注意该索引是唯一索引因此值不能重复即 _id 值不能重复的。在分片集群中通常使用 _id 作为片键 3.2 索引的创建 说明 在集合上创建索引。 语法 db.collection.createIndex(keys, options)参数 参数类型说明keysdocument包含字段和值对的文档其中字段是索引键值描述该字段的索引类型。对于字段上的升序索引请指定值1对于降序索引请指定值-1。比如 {字段:1或-1} 其中1 为指定按升序创建索引如果你想按降序来创建索引指定为 -1 即可。另外MongoDB支持几种不同的索引类型包括文本、地理空间和哈希索引。optionsdocument可选。包含一组控制索引创建的选项的文档。. 注意 在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex() 之后的版本使用了 db.collection.createIndex() 方法ensureIndex() 还能用但只是 createIndex() 的别名。 3.2.1 单字段索引 示例对 userid 字段建立索引 db.comment.createIndex({userid:1}) {createdCollectionAutomatically : false,numIndexesBefore : 1,numIndexesAfter : 2,ok : 1 }db.comment.getIndexes() [{v : 2,key : {_id : 1},name : _id_,ns : articledb.comment},{v : 2,key : {userid : 1},name : userid_1,ns : articledb.comment} ]建立索引时的参数按升序创建索引 在mongodb-compass中也可以看到创建的索引 3.2.2 复合索引 对 userid 和 nickname 同时建立复合Compound索引 db.comment.createIndex({userid:1,nickname:-1}) {createdCollectionAutomatically : false,numIndexesBefore : 2,numIndexesAfter : 3,ok : 1 }db.comment.getIndexes() [{v : 2,key : {_id : 1},name : _id_,ns : articledb.comment},{v : 2,key : {userid : 1},name : userid_1,ns : articledb.comment},{v : 2,key : {userid : 1,nickname : -1},name : userid_1_nickname_-1,ns : articledb.comment} ]mongodb-compass中查看 3.3 索引的移除 说明可以移除指定的索引或移除所有索引 3.3.1 指定索引的移除 语法 db.collection.dropIndex(index)参数 参数类型说明indexstring or document指定要删除的索引。可以通过索引名称或索引规范文档指定索引。若要删除文本索引请指定索引名称。 【示例】 删除 comment 集合中 userid 字段上的升序索引 db.comment.dropIndex({userid:1}) { nIndexesWas : 3, ok : 1 } db.comment.getIndexes() [{v : 2,key : {_id : 1},name : _id_,ns : articledb.comment},{v : 2,key : {userid : 1,nickname : -1},name : userid_1_nickname_-1,ns : articledb.comment} ]删除复合索引 db.comment.dropIndex(userid_1_nickname_-1){ nIndexesWas : 2, ok : 1 } db.comment.getIndexes() [{v : 2,key : {_id : 1},name : _id_,ns : articledb.comment} ]3.3.2 所有索引的移除 语法 db.comment.dropIndexes()【示例】 删除 comment 集合中所有索引 db.comment.dropIndexes() {nIndexesWas : 1,msg : non-_id indexes dropped for collection,ok : 1 }db.comment.getIndexes() [{v : 2,key : {_id : 1},name : _id_,ns : articledb.comment} ]注意 _id 的字段的索引是无法删除的只能删除非 _id 字段的索引。 四、 索引的使用 4.1 执行计划 分析查询性能Analyze Query Performance通常使用执行计划解释计划、Explain Plan来查看查询的情况如查询耗费的时间、是否基于索引查询等。 那么通常我们想知道建立的索引是否有效效果如何都需要通过执行计划查看。 语法 db.collection.find(query,options).explain(options)【示例】 查看根据userid查询数据的情况 db.comment.find({userid:1003}).explain() {queryPlanner : {plannerVersion : 1,namespace : articledb.comment,indexFilterSet : false,parsedQuery : {userid : {$eq : 1003}},winningPlan : {stage : COLLSCAN,filter : {userid : {$eq : 1003}},direction : forward},rejectedPlans : [ ]},serverInfo : {host : SKY-20211222SVF,port : 27017,version : 4.0.12,gitVersion : 5776e3cbf9e7afe86e6b29e22520ffb6766e95d4},ok : 1 }注意 stage : COLLSCAN, 表示全集合扫描 下面对userid建立索引 db.comment.createIndex({userid:1}) {createdCollectionAutomatically : false,numIndexesBefore : 1,numIndexesAfter : 2,ok : 1 }db.comment.find({userid:1003}).explain() {queryPlanner : {plannerVersion : 1,namespace : articledb.comment,indexFilterSet : false,parsedQuery : {userid : {$eq : 1003}},winningPlan : {stage : FETCH,inputStage : {stage : IXSCAN,keyPattern : {userid : 1},indexName : userid_1,isMultiKey : false,multiKeyPaths : {userid : [ ]},isUnique : false,isSparse : false,isPartial : false,indexVersion : 2,direction : forward,indexBounds : {userid : [[\1003\, \1003\]]}}},rejectedPlans : [ ]},serverInfo : {host : SKY-20211222SVF,port : 27017,version : 4.0.12,gitVersion : 5776e3cbf9e7afe86e6b29e22520ffb6766e95d4},ok : 1 }compass查看 4.2 涵盖的查询 Covered Queries 当查询条件和查询的投影仅包含索引字段时MongoDB直接从索引返回结果而不扫描任何文档或将文档带入内存。 这些覆盖的查询可以非常有效。类似mysql不用回表扫描 更多https://docs.mongodb.com/manual/core/query-optimization/#read-operations-covered-query 【示例】 db.comment.find({userid:1003},{userid:1,_id:0}) { userid : 1003 } { userid : 1003 }db.comment.find({userid:1003},{userid:1,_id:0}).explain() {queryPlanner : {plannerVersion : 1,namespace : articledb.comment,indexFilterSet : false,parsedQuery : {userid : {$eq : 1003}},winningPlan : {stage : PROJECTION,transformBy : {userid : 1,_id : 0},inputStage : {stage : IXSCAN,keyPattern : {userid : 1},indexName : userid_1,isMultiKey : false,multiKeyPaths : {userid : [ ]},isUnique : false,isSparse : false,isPartial : false,indexVersion : 2,direction : forward,indexBounds : {userid : [[\1003\, \1003\]]}}},rejectedPlans : [ ]},serverInfo : {host : SKY-20211222SVF,port : 27017,version : 4.0.12,gitVersion : 5776e3cbf9e7afe86e6b29e22520ffb6766e95d4},ok : 1 }compass查看 全部文章 MongoDB笔记01-概念与安装 MongoDB笔记02-MongoDB基本常用命令 MongoDB笔记03-MongoDB索引 MongoDB笔记04-SpringBoot整合MongoDB
http://www.w-s-a.com/news/702408/

相关文章:

  • 网站根域名是什么php做商城网站步骤
  • 建设网站的那个公司好网站建设万首先金手指12
  • 广东民航机场建设有限公司网站网站开发后端用什么
  • 做风帆网站需要多少钱越野车网站模板
  • 如何做网站平台销售用狗做头像的网站
  • 宝安电子厂做网站美食网页设计的制作过程
  • 网站logo提交学网站开发技术
  • 跨境电商平台网站建设广州西安官网seo推广
  • 我和你99谁做的网站小程序制作第三方平台
  • 建设银行网站用户名鹤岗网站seo
  • 做一元夺宝网站需要什么条件西安市做网站的公司
  • 零基础建设网站教程郑州做网站推广价格
  • 平面设计免费素材网站新开三端互通传奇网站
  • ppt模板免费下载 素材医疗seo网站优化推广怎么样
  • 课程网站怎么做wordpress文章改背景色
  • 网络营销从网站建设开始卖汽车配件怎么做网站
  • 手机商城网站制作公司济南想建设网站
  • .net 建网站网站网站做员工犯法吗
  • 电子商务网站建设说课稿棕色网站设计
  • 怎么做律所的官方网站红塔网站制作
  • 装一网装修平台官网惠州seo按天付费
  • 湖南建设监理报名网站东莞模块网站建设方案
  • 网站建设小组个人主页html源码
  • 响应式网站检测工具营销公司业务范围
  • 网站源码如何安装做游戏课程网站
  • 选服务好的网站建设亚洲砖码砖专区2022
  • 网站快速查找wordpress 悬停 图片 文字
  • 网站续费 多久想自己做网站该学些什么
  • 可以自己做网站wordpress英文写作插件
  • 国外可以做会员网站的网站怎么查百度竞价关键词价格