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

淘宝接网站开发的活西宁市建设局网站

淘宝接网站开发的活,西宁市建设局网站,网站推广怎么做的,正规品牌网站设计地址文章目录 1. 索引概述2. 索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引2.3.1 地理空间索引#xff08;Geospatial Index#xff09;2.3.2 文本索引#xff08;Text Indexes#xff09;2.3.3 哈希索引#xff08;Hashed Indexes#xff09; 3. 索引相关操作3.1 查看索… 文章目录 1. 索引概述2. 索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引2.3.1 地理空间索引Geospatial Index2.3.2 文本索引Text Indexes2.3.3 哈希索引Hashed Indexes 3. 索引相关操作3.1 查看索引3.2 创建索引3.3.1 创建单字段索引3.3.2 创建复合索引3.3.3 创建文本索引 3.4 移除索引3.4.1 移除指定索引3.4.2 移除所有索引 4. 索引的使用4.1 执行计划4.2 执行计划中各个字段的含义4.3 stage字段的取值及含义4.4 覆盖查询 阅读本文前可以先阅读以下文章 MongoDB快速入门MongoDB简介、MongoDB的应用场景、MongoDB中的基本概念、MongoDB的数据类型、MongoDB的安装与部署、MongoDB的常用命令MongoDB的常用命令数据库操作、集合操作、文档操作 1. 索引概述 MongoDB 索引的官网文档索引-MongoDB手册 索引支持在 MongoDB 中高效执行查询。如果没有索引MongoDB 就必须扫描集合中的每个文档以返回查询结果。如果查询存在适当的索引MongoDB 就可以使用该索引来限制其必须扫描的文档数 索引可提高查询性能但添加索引会影响写入操作的性能。对于写入读取率高的集合由于每次插入操作都必须同时更新所有索引因此会带来较高的索引成本 MongoDB 索引使用 B-Tree 数据结构MySQL 是 BTree 2. 索引的类型 2.1 单字段索引 MongoDB 支持在文档的单个字段上创建用户定义的升序索引或降序索引称为单字段索引Single Field Index 对于单个字段索引和排序操作索引键的排序顺序即升序或降序并不重要因为 MongoDB 可以在任何方向上遍历索引 2.2 复合索引 MongoDB 支持多个字段的自定义索引即复合索引Compound Index 复合索引中列出的字段顺序具有重要意义。例如如果复合索引由 { user_id: 1, score: -1 } 组成则索引首先会按 user_id 正序排序然后在每个 user_id 的值内再按 score 倒序排序 2.3 其他索引 2.3.1 地理空间索引Geospatial Index 为了支持对地理空间坐标数据的有效查询MongoDB 提供了两种特殊的索引返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引 2.3.2 文本索引Text Indexes 文本索引的特点 分词MongoDB 在创建文本索引时会对字段内容进行分词处理将文本分解成单词或术语tokens权重可以为不同的字段指定不同的权重以便在搜索时影响文档的相关性得分停用词MongoDB 会忽略某些常用词如 “the”、“and” 等这些词被称为停用词。MongoDB 有一个内置的停用词列表也可以自定义停用词列表语言支持MongoDB 的文本索引支持多种语言的分词和搜索 注意事项 文本索引不存储停止词和词干。这意味着它们不会影响索引的大小文本索引不能用于文本字段中的二进制数据文本索引不能用于数组字段中的字符串元素$text 查询不能与 $ 或 $$ 运算符一起使用 2.3.3 哈希索引Hashed Indexes 为了支持基于散列的分片MongoDB 提供了散列索引类型它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机但只支持相等匹配不支持基于范围的查询 3. 索引相关操作 3.1 查看索引 查看索引的语法 db.collection.getIndexes()查看 comment 集合中所有的索引 db.collection.getIndexes()查询结果如下 [ { v: 2, key: { _id: 1 }, name: _id_ } ]结果中显示的是默认的 _id_ 索引MongoDB 在创建集合的过程中会在 _id 字段上创建一个唯一的索引默认名字为 _id_该索引可防止插入两个具有相同 _id 值的文档 _id 索引是唯一索引因此 _id 值不能重复在分片集群中通常使用 _id 作为片键 3.2 创建索引 创建索引的语法 db.collection.createIndex(keys, options)参数名类型描述必需keys文档指定索引的字段和索引类型。对于文本索引字段类型应该设置为 text。可以指定单个字段或多个字段是options文档索引的额外选项。这是一个可选参数可以包含多个字段否 options 参数的详细说明 选项类型描述默认值background布尔是否在后台创建索引。如果为 trueMongoDB 将在后台创建索引这样就不会阻塞其他数据库操作falseunique布尔是否创建唯一索引。如果为 true则索引字段的值必须是唯一的falsename字符串索引的名称。如果未指定MongoDB 会自动生成一个名称自动生成partialFilterExpression文档指定部分索引的过滤条件。只有满足条件的文档才会包含在索引中无sparse布尔是否创建稀疏索引。如果为 true则索引只包含具有指定字段的文档忽略没有该字段的文档falseexpireAfterSeconds整数对于具有日期类型的字段指定文档在集合中的生存时间TTL无storageEngine文档指定索引的存储引擎配置使用默认存储引擎配置weights文档对于文本索引为索引中的每个字段指定权重。权重越高字段在文本搜索中的相关性得分越高所有字段权重相等 3.3.1 创建单字段索引 对 user_id 字段建立单字段索引 db.comment.createIndex({ user_id: 1 });再次查看 comment 集合中所有的索引 [{ v: 2, key: { _id: 1 }, name: _id_ },{ v: 2, key: { user_id: 1 }, name: user_id_1 } ]3.3.2 创建复合索引 对 user_id 和 nickname 建立复合Compound索引 db.comment.createIndex({ userid: 1, nickname: -1 });再次查看 comment 集合中所有的索引 [{ v: 2, key: { _id: 1 }, name: _id_ },{ v: 2, key: { user_id: 1 }, name: user_id_1 },{v: 2,key: { userid: 1, nickname: -1 },name: userid_1_nickname_-1} ]3.3.3 创建文本索引 对 content 字段建立单字段索引 db.comment.createIndex({ content: text });3.4 移除索引 3.4.1 移除指定索引 db.collection.dropIndex(index);删除 comment 集合中 user_id 字段上的升序索引 db.comment.dropIndex({ user_id: 1 } );3.4.2 移除所有索引 db.collection.dropIndexes()删除 comment 集合中的所有索引 db.comment.dropIndexes()_id 的字段的索引是无法删除的只能删除非 _id 字段的索引 4. 索引的使用 4.1 执行计划 分析查询性能Analyze Query Performance通常使用执行计划Explain Plan来查看查询的情况如查询耗费的时间、是否基于索引查询等 db.collection.find(query,options).explain(options)参数名类型描述必需querydocument查询选择器用于指定查询条件是optionsdocument可选的。用于修改查询的默认行为的各种选项如排序、限制等否explainfunction用于获取查询执行计划的详细信息是调用时explainOptionsdocument可选的。用于修改解释操作的默认行为的各种选项否 每个参数的详细解释 query: 这是一个文档用于定义查询条件。它可以是简单的字段等值查询也可以是复杂的条件组合包括逻辑运算符和正则表达式options: 这是一个文档可以包含多个键用于控制查询的行为。常见的选项包括 sort: 排序条件limit: 限制返回的文档数量skip: 跳过文档的数量。projection: 投影用于指定返回的字段 explain: 这是一个函数当你在查询后面调用它时MongoDB 不会返回查询结果而是返回查询执行计划的详细信息。这有助于理解查询是如何执行的以及如何优化查询explainOptions: 这是一个文档用于控制解释操作的输出。例如可以指定是否返回所有阶段的执行计划或者只返回获胜计划 根据 user_id 字段查询数据 db.comment.find({ user_id: 1003 }).explain();MongoDB 返回的结果 {explainVersion: 1,queryPlanner: {namespace: test.comment,parsedQuery: {user_id: {$eq: 1003}},indexFilterSet: false,queryHash: B7F3AE51,planCacheKey: 8C1EE785,optimizationTimeMillis: 0,maxIndexedOrSolutionsReached: false,maxIndexedAndSolutionsReached: false,maxScansToExplodeReached: false,prunedSimilarIndexes: false,winningPlan: {isCached: false,stage: COLLSCAN,filter: {user_id: {$eq: 1003}},direction: forward},rejectedPlans: []},command: {find: comment,filter: {user_id: 1003},$db: test},serverInfo: {host: LAPTOP-G7HILK54,port: 27017,version: 8.0.3,gitVersion: 89d97f2744a2b9851ddfb51bdf22f687562d9b06},serverParameters: {internalQueryFacetBufferSizeBytes: 104857600,internalQueryFacetMaxOutputDocSizeBytes: 104857600,internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,internalDocumentSourceGroupMaxMemoryBytes: 104857600,internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,internalQueryProhibitBlockingMergeOnMongoS: 0,internalQueryMaxAddToSetBytes: 104857600,internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,internalQueryFrameworkControl: trySbeRestricted,internalQueryPlannerIgnoreIndexWithCollationForRegex: 1},ok: 1 }重点关注 winningPlan 中的 stage 字段COLLSCAN 表示全盘扫描 下面对 user_id 字段建立索引 db.comment.createIndex({ user_id: 1 });再次查看执行计划 {explainVersion: 1,queryPlanner: {namespace: test.comment,parsedQuery: {user_id: {$eq: 1003}},indexFilterSet: false,queryHash: B7F3AE51,planCacheKey: 57E4C731,optimizationTimeMillis: 0,maxIndexedOrSolutionsReached: false,maxIndexedAndSolutionsReached: false,maxScansToExplodeReached: false,prunedSimilarIndexes: false,winningPlan: {isCached: false,stage: FETCH,inputStage: {stage: IXSCAN,keyPattern: {user_id: 1},indexName: user_id_1,isMultiKey: false,multiKeyPaths: {user_id: []},isUnique: false,isSparse: false,isPartial: false,indexVersion: 2,direction: forward,indexBounds: {user_id: [[1003, 1003]]}}},rejectedPlans: []},command: {find: comment,filter: {user_id: 1003},$db: test},serverInfo: {host: LAPTOP-G7HILK54,port: 27017,version: 8.0.3,gitVersion: 89d97f2744a2b9851ddfb51bdf22f687562d9b06},serverParameters: {internalQueryFacetBufferSizeBytes: 104857600,internalQueryFacetMaxOutputDocSizeBytes: 104857600,internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,internalDocumentSourceGroupMaxMemoryBytes: 104857600,internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,internalQueryProhibitBlockingMergeOnMongoS: 0,internalQueryMaxAddToSetBytes: 104857600,internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,internalQueryFrameworkControl: trySbeRestricted,internalQueryPlannerIgnoreIndexWithCollationForRegex: 1},ok: 1 }可以发现stage 字段已经变成了 FETCHinputStage 属性里面的 stage 字段变成了 IXSCAN基于索引的扫描 4.2 执行计划中各个字段的含义 字段名描述explainVersion解释输出的版本号。queryPlanner查询计划器的详细信息。namespace执行查询的命名空间数据库和集合。parsedQuery解析后的查询条件。indexFilterSet是否设置了索引过滤器。queryHash查询的哈希值。planCacheKey用于查询缓存的键。optimizationTimeMillis查询优化所花费的时间毫秒。maxIndexedOrSolutionsReached是否达到了索引 OR 解决方案的最大数量。maxIndexedAndSolutionsReached是否达到了索引 AND 解决方案的最大数量。maxScansToExplodeReached是否达到了索引爆炸扫描的最大数量。prunedSimilarIndexes是否修剪了相似的索引。winningPlan被选中的查询计划。isCached是否从计划缓存中检索到计划。stage查询执行的阶段。inputStage当前阶段的输入阶段用于嵌套阶段。keyPattern索引的键模式。indexName索引的名称。isMultiKey索引是否是多键索引。multiKeyPaths包含多键路径的索引字段。isUnique索引是否是唯一索引。isSparse索引是否是稀疏索引。isPartial索引是否是部分索引。indexVersion索引的版本。direction索引扫描的方向。indexBounds索引扫描的边界。rejectedPlans被拒绝的查询计划列表。command执行的命令的详细信息。serverInfo服务器信息包括主机名、端口、版本等。serverParameters影响查询执行的服务器参数。ok命令是否成功执行的标志。 4.3 stage字段的取值及含义 阶段名称描述COLLSCAN集合扫描即全集合扫描没有使用索引。IXSCAN索引扫描使用索引来查找文档。FETCH获取阶段用于检索索引扫描后找到的文档的其余字段。SHARD_MERGE在分片集群中合并来自不同分片的查询结果。SORT排序阶段对结果进行排序。LIMIT限制阶段限制返回的文档数量。SKIP跳过阶段跳过指定数量的文档。IDHACK对于 _id 的查询MongoDB 可以使用特殊的优化。SHARDING_FILTER在分片集群中用于过滤掉不属于当前查询的分片数据的阶段。PROJECTION投影阶段只返回文档中的特定字段。TEXT文本搜索阶段用于文本索引的搜索。GEONEAR地理空间查询阶段用于查找最接近某个点的文档。GEOFILTER地理空间过滤阶段用于过滤地理空间查询的结果。COUNT计数阶段用于 count 操作。COUNT_SCAN使用索引进行计数扫描的阶段。COUNT_SCAN_WITH_FILTER使用索引进行计数扫描并且应用过滤器的阶段。DISTINCT_SCAN用于 distinct 操作的索引扫描阶段。SUBPLAN子计划阶段用于处理复杂查询的一部分。IXHASH使用散列索引的阶段。FORCED_SCAN强制进行集合扫描即使存在索引。COVERED索引覆盖查询所有需要的字段都在索引中不需要回表查询。EOF查询结束。 4.4 覆盖查询 当查询条件和查询的投影仅包含索引字段时MongoDB 会直接从索引返回结果而不扫描任何文档或将文档带入内存这些覆盖的查询非常高效类似于 MySQL 中的覆盖索引 db.comment.find({ user_id: 1003 },{ user_id: 1, _id: 0 } ).explain();MongoDB 返回的结果 {explainVersion: 1,queryPlanner: {namespace: test.comment,parsedQuery: {user_id: {$eq: 1003}},indexFilterSet: false,queryHash: DC80EEEF,planCacheKey: B8237218,optimizationTimeMillis: 0,maxIndexedOrSolutionsReached: false,maxIndexedAndSolutionsReached: false,maxScansToExplodeReached: false,prunedSimilarIndexes: false,winningPlan: {isCached: false,stage: PROJECTION_COVERED,transformBy: {user_id: 1,_id: 0},inputStage: {stage: IXSCAN,keyPattern: {user_id: 1},indexName: user_id_1,isMultiKey: false,multiKeyPaths: {user_id: []},isUnique: false,isSparse: false,isPartial: false,indexVersion: 2,direction: forward,indexBounds: {user_id: [[1003, 1003]]}}},rejectedPlans: []},command: {find: comment,filter: {user_id: 1003},projection: {user_id: 1,_id: 0},$db: test},serverInfo: {host: LAPTOP-G7HILK54,port: 27017,version: 8.0.3,gitVersion: 89d97f2744a2b9851ddfb51bdf22f687562d9b06},serverParameters: {internalQueryFacetBufferSizeBytes: 104857600,internalQueryFacetMaxOutputDocSizeBytes: 104857600,internalLookupStageIntermediateDocumentMaxSizeBytes: 104857600,internalDocumentSourceGroupMaxMemoryBytes: 104857600,internalQueryMaxBlockingSortMemoryUsageBytes: 104857600,internalQueryProhibitBlockingMergeOnMongoS: 0,internalQueryMaxAddToSetBytes: 104857600,internalDocumentSourceSetWindowFieldsMaxMemoryBytes: 104857600,internalQueryFrameworkControl: trySbeRestricted,internalQueryPlannerIgnoreIndexWithCollationForRegex: 1},ok: 1 }
http://www.w-s-a.com/news/929118/

相关文章:

  • 手机网站 分辨率如何创建网站挣钱
  • 网站建设工作标准做模版网站
  • 免费注册微信网站怎样做天猫网站视频
  • 青海建设厅网站通知wordpress如何改文章id
  • 国外搜索网站建设支付网站备案
  • 合肥建站公司有哪家招聘的拼车平台网站开发
  • 网站 备案 固话北京建站模板企业
  • 网站开发的公司wordpress分类目录 模版
  • flashfxp怎么上传对应网站空间wordpress无法创建
  • 建设网站案例分析做网站代理怎么赚钱
  • 唯品会网站建设特色域名备案期间 网站访问
  • 郑东新区建设局网站怎么做万网网站
  • 阿里云上传的网站 服务器路径试用网站开发
  • 做美食原创视频网站网站开发要多钱
  • 怎么做网站作业哪个网站可兼职做logo
  • asp网站搭建教程做网站备案完成之后需要干什么
  • 无锡外贸网站开发兰州网站在哪备案
  • 广州百度网站建设公司天津建设电工证查询网站
  • 网站建设与管理行业发展情况制作网页动态效果
  • wordpress 特色缩略图临沂seo全网营销
  • 隆昌市住房和城乡建设厅网站做网站用什么字体比较好
  • 惠州网站建设设计18款未成年禁用软件ap入口
  • 班级网站 建设目标如何做好网站建设内容的策划书
  • 网站建设与网页设计期末考试清博舆情系统
  • plone网站开发商城网站建设怎么收费
  • 旺旺号查询网站怎么做公司门户网站项目模版
  • 网站免费一站二站四站上海网站怎么备案表
  • 漫画交流网站怎么做开发微信小程序公司
  • 网站建设马鞍山怎么建立局域网网站
  • 开源 网站开发框架哪些网站可以做图片链接