MongoDB索引定义策略

2024-02-24

我有一个基于 MongoDB 的数据库,里面有大约 100K 到 500K 文本文档,并且该集合不断增长。系统应支持文档不同字段的查询,例如:标题、类别、重要性等

该系统是一个近乎实时的系统,每 5-10 分钟就会获取新文档。

为了提高查询性能,为每个查询定义一个单独的索引是一个好主意吗?频繁地文档的查询字段(字段类型:小文本、数字、日期)?或者 MongoDB 中还有其他提高查询性能的最佳实践吗?


您应该根据您尝试的结果使用/创建索引find。 对于您在不同时间尝试查找的不同字段使用不同的索引是一个非常好的主意。

但请记住,索引会占用您的 RAM。你创建的索引越多,它就会使用你的 RAM。还要考虑索引的排序,同时进行更好的搜索。

在开发索引策略时,您应该深入了解应用程序的查询。在构建索引之前,请规划出要运行的查询类型,以便可以构建引用这些字段的索引。索引会带来性能成本,但对于大型数据集的频繁查询来说,这是值得的。考虑应用程序中每个查询的相对频率以及查询是否证明索引合理。

设计索引的最佳总体策略是使用与您将在生产中运行的数据集类似的数据集来分析各种索引配置,以查看哪些配置性能最佳。检查为您的集合创建的当前索引,以确保它们支持您的当前和计划的查询。如果不再使用某个索引,请删除该索引。

创建时要选择的一些策略:

  1. 创建索引来支持您的查询 https://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/当索引包含查询扫描的所有字段时,索引支持查询。创建支持查询的索引可以大大提高查询性能。

  2. 使用索引对查询结果进行排序 https://docs.mongodb.org/manual/tutorial/sort-results-with-indexes/为了支持高效查询,请在指定索引字段的顺序和排序顺序时使用此处的策略。

  3. 确保索引适合 RAM https://docs.mongodb.org/manual/tutorial/ensure-indexes-fit-ram/当您的索引适合 RAM 时,系统可以避免从磁盘读取索引,并且您可以获得最快的处理速度。

  4. 创建确保选择性的查询 https://docs.mongodb.org/manual/tutorial/create-queries-that-ensure-selectivity/选择性是查询使用索引缩小结果范围的能力。选择性允许 MongoDB 使用索引来完成与完成查询相关的大部分工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB索引定义策略 的相关文章

  • 在什么情况下 do-while 比 while 更高效?

    while 与 do while while 和 do while 在功能上是等效的当块为空时 虽然 while 看起来更自然 do while keepLooping while keepLooping 使用空块的 while do wh
  • 类型错误:“float”对象不可下标

    PizzaChange float input What would you like the new price for all standard pizzas to be PriceList 0 1 2 3 4 5 6 PizzaCha
  • MongoClient:尝试使用 Mongoose 时未连接错误

    作为课程的一部分 我正在学习 MongoDB 现在正在学习 Mongoose 我已经完全按照课程中的方式编写了代码 但是当尝试使用node app js 我收到以下错误 node app js Output node 25772 Unhan
  • Spring data 和 mongoDB - 继承和@DBRef

    我有这两份文件 用户 Document collection User public class User fields 和联系方式 Document collection Contact public class Contact exte
  • 获取 Pandas 数据框中选定值的行和列标签

    我想获取与数据框中某些条件匹配的值的行和列标签 为了保持它的趣味性 我需要它与分层 多 索引一起使用 例如 df pd DataFrame np arange 16 reshape 4 4 columns pd MultiIndex fro
  • Laravel 上传前如何压缩图像?

    我正在制作一个图片库网站 用户可以在其中上传任何图像 它们将显示在前端 我需要在不影响图像质量的情况下压缩图像 以减小图像大小 以便页面加载速度不会影响那么大 我使用以下代码来上传图像 rules array file gt require
  • Android复杂布局线性和相对

    I have to implement a layout like shown in the diagram and I do not know the best combination to achieve the required de
  • UITableView 由于阴影和边框而滞后

    我有以下代码来向 UITableViewCell 的背景添加边框颜色和阴影 我的问题是这段代码会导致 tableView 本身出现巨大的滞后 请你告诉我如何优化我的代码 防止 UITableView 的滞后 if cell viewWith
  • 简单循环的速度[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我用Java做了一个简单的循环只是为了测试速度 与 C 中的相同循环相比 它需要更多的时间 20亿次迭代大约需要6 5秒当它被执行时
  • 如果 jQuery 脚本是在所有页面 HTML 之后加载的,那么它们还需要 $(document).ready 吗?

    如果我在所有页面 HTML 下方加载 jQuery 脚本 我是否还需要等待 document ready能够使用jQuery来查找页面中的元素 否 因为文档已经加载 Dom 从上到下加载 我个人喜欢把所有的js放在页面底部而不是放在头部 然
  • 性能:cakephp-mysql 中的 UUID 与自动递增

    我正在搜索 cakePHP 生成的 UUID 32 个字符长 是否比自动增量在性能上更快 插入和选择操作的比较 我应该使用 cakePHP 生成的 UUID 还是使用 MySQL 的简单自动增量生成的 UUID 这是我发现的一个案例研究 但
  • MongoDB C# 驱动程序检查身份验证状态和角色

    这是我使用 MongoDB 身份验证机制登录 MongoDB 的代码 try var credential MongoCredential CreateMongoCRCredential test admin 123456 var sett
  • MongoDB聚合选择性项目

    我在聚合聚合期间遇到了重塑文档的问题 基本上我想根据条目的类型将条目推送到字段中 我的结构如下 id P1 entities type A val X type B val X type A val Y 我想 unwind 和 projec
  • Mongodb 以不区分大小写的方式排序

    我在 Nodejs express 中以 mongodb 作为数据库的一个项目中非常努力地构建 当我使用 sort 获取所有数据时 它以错误的方式返回数据 那么有没有办法按照我的预期得到正确的格式 如下所示 如果我们在数据库中有三个记录 i
  • SQL Azure 和 READ_COMMITTED_SNAPSHOT

    我想在 SQL Azure 数据库上将 READ COMMITTED SNAPSHOT 设置为 ON 但 Azure 不支持以下适用于其他版本的 SQL Server 的代码 ALTER DATABASE database name SET
  • IN 运算符对 SQL 查询性能的影响有多大?

    我的 SQL 查询需要 9 个小时才能执行 见下文 Select Field1 Field2 From A Where Field3 IN 45 unique values here 当我将此查询拆分为 3 个完全相同的查询 仅每个 IN
  • 使用 mgo 驱动程序进行 mongo 聚合查询

    我在 mongodb 中有以下查询 db devices aggregate match userId v73TuQqZykbxFXsWo state true project userId 1 categorySlug 1 weight
  • MongoDB中批量FindAndModify的解决方案

    我的用例如下 我在 mongoDB 中有一组文档 我必须发送这些文档进行分析 文件格式如下 id ObjectId 517e769164702dacea7c40d8 日期 1359911127494 状态 可用 其他字段 我有一个阅读器进程
  • MongoDB:与基本查找相比,管道查找性能较慢

    我有两个收藏 matches date 2020 02 15T17 00 00Z players id 5efd9485aba4e3d01942a2ce id 5efd9485aba4e3d01942a2cf and players id
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引

随机推荐

  • 我在 Flutter/Dart 异步代码执行方面遇到问题,例如它是如何工作的

    在 Flutter 中 我们使用 async wait 和 Future 有人可以解释一下 如果我们不使用另一个线程 在 dart 中不能这样做 并仅在主 UIThread 上运行作业 应用程序不会变得不稳定 因为即使我们等待作业执行它最终
  • 测试返回 IEnumerable 的函数

    有人可以指导我如何为返回 Ienumerable 的方法编写测试吗 这是我的方法 public IEnumerable
  • 如何将 Xamarin.Forms XAML UI 页面转换为 PDF 文件?

    在Xamarin Forms中 我想将我的xaml页面UI 有时我的页面在有更多内容时是可滚动的 转换为PDF 我已经尝试过PDFSharp https github com akgulebubekir PDFSharp Xamarin F
  • 在 XMLAGG 中对重复记录使用不同值

    我在 sql 中使用 XMLAGG 时遇到问题 我有一个包含多个可以重复的记录的表 该表包含客户地址和客户名称 Create Table cust data cust name varchar2 30 cust addr line1 var
  • 在浏览器中使用Q库

    我需要使用Q图书馆 http documentup com kriskowal q http documentup com kriskowal q 在浏览器中 我想用RequireJS加载这个库 但我不知道如何做到这一点 我知道如何加载我自
  • 在整个 oracle 数据库中搜索字符串的一部分

    我正在尝试在整个 Oracle 数据库中查找特定字符串 我已经按照此处另一个主题中的示例进行了操作 在所有表中的所有字段中搜索特定值 Oracle https stackoverflow com questions 208493 searc
  • Android - Espresso 测试 - 关闭应用程序然后重新打开它?

    在我的浓缩咖啡测试中 我使用 device pressBack 关闭应用程序 然后我想在某个活动中重新打开应用程序 但我不太确定该怎么做 因为此时我什至没有上下文 有人有想法吗 好的 我知道了 您在测试类中定义规则 Rule public
  • Visual Studio 的“自动解析”功能不适用于扩展方法 - 现在怎么办?

    我喜欢视觉工作室中的 解决 功能 典型场景 Type in Debug Type 请注意 没有出现智能感知 右键点击 选择解决 Choose using System Diagnostics or System Diagnostics De
  • 通过依赖注入使用 Blazor Webassemble 进行 gRPC-Web 通道身份验证

    我正在 Blazor Web assembly 中通过身份验证测试 gRPC Web 并在如何干净地访问我的 gRPC 通道方面遇到了一些障碍 无需身份验证 有一种非常简单明了的方法 如 grpc dotnet 的 Blazor 示例中详细
  • 如何在有条件的字符串之间添加字符

    如果字符串中存在 20 则必须用 OR 替换 abc 20 def 预计出 gt abc OR def if 字符串中必须替换为 OR abc def Expected out gt abc OR def string abc def 需要
  • 简单的 Flask/gevent 请求没有同时运行

    我有这个简单的 Flask gevent 演示代码 usr bin env python import gevent from gevent pywsgi import WSGIServer from gevent import monke
  • 如何使用CSS创建没有图像的纹理纸背景[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法使用 CSS 创建没有图像的背景 颜色和纹理 正如达斯汀所说 CSS 不存在 纹理 功能 然而 如果你使用 CSS3 你可以
  • Facebook sdk 在应用程序委托中崩溃

    以下是我复制该错误的方法 这是我用于登录的代码 IBAction func FBLoginAction sender AnyObject fbLoginManager loginBehavior FBSDKLoginBehavior bro
  • 由于 Web 部署而将绝对路径更改为相对路径(Python - Flask)

    我创建了一个可以在本地运行的应用程序 我想将其部署到 Heroku 当我部署它时 我在 Heroku 日志中收到错误 提示找不到我在脚本中指定的文件夹 正如预期的那样 它们是绝对路径 我正在尝试做出改变 但没有一个有效 我在服务器端使用 F
  • 如何在 iOS SDK 中为用户提供预先编写的 SMS 消息

    我使用 Apple Dev 网站上的示例代码来学习如何设置预写电子邮件 但是有没有办法类似地设置预写短信 首先你必须添加框架MessageUI到您的项目并导入库 MessageUI MessageUI h 然后遵守协议
  • Android - 将视频/音频文件上传到 Firebase 存储

    我正在使用 Firebase 存储来保存视频 音频用户的文件 我的主要想法是将每个视频 音频保存在用户 ID UID 下 这意味着每个用户在其 UID 下保存有多个视频 音频文件 我写了一个代码 问题是他不断将新视频保存在我保存的旧视频上
  • JavaFX 菜单栏中的菜单右对齐

    In Java Swing可以使用以下方法将菜单放在菜单栏的右侧 menubar add menu1 menubar add Box createHorizontalGlue menubar add menu2 这将把menu1在左边和me
  • 如何播放 MP3 文件? [复制]

    这个问题在这里已经有答案了 我正在尝试访问MP3 http en wikipedia org wiki MP3音频文件保存在我的源文件夹中 以便我可以在 Java 程序 应用程序 而不是小程序 中播放它 我似乎遇到的问题是我无法导入java
  • HTML5在画布上拖放路径,无需JS库

    我想在 HTML5 画布上拖放路径 如果我们点击形状 我没有发现任何类似 SVG 提供事件的东西 有人知道我如何在这里处理路径项上的事件吗 我想在没有任何java脚本库的情况下做到这一点 以下是我当前绘制路径的代码 var canvas d
  • MongoDB索引定义策略

    我有一个基于 MongoDB 的数据库 里面有大约 100K 到 500K 文本文档 并且该集合不断增长 系统应支持文档不同字段的查询 例如 标题 类别 重要性等 该系统是一个近乎实时的系统 每 5 10 分钟就会获取新文档 为了提高查询性