Performance MongoDB索引定义策略

Performance MongoDB索引定义策略,performance,mongodb,indexing,query-optimization,database-performance,Performance,Mongodb,Indexing,Query Optimization,Database Performance,我有一个基于MongoDB的数据库,里面有大约10万到50万个文本文档,收集量还在不断增长。系统应支持按文件的不同字段进行查询,如标题、类别、重要性等 该系统是一个近乎实时的系统,每5-10分钟获得一次新文档 我的问题: 为了提高查询的性能,为文档中每个经常查询的字段(字段类型:小文本、数字、日期)定义一个单独的索引是一个好主意吗?或者在MongoDB中还有另一种提高查询性能的最佳实践?您应该根据您试图查找的结果使用/创建索引。 对于您在不同时间尝试查找的不同字段,最好使用不同的索引 但请记住,

我有一个基于MongoDB的数据库,里面有大约10万到50万个文本文档,收集量还在不断增长。系统应支持按文件的不同字段进行查询,如标题、类别、重要性等

该系统是一个近乎实时的系统,每5-10分钟获得一次新文档

我的问题:

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

您应该根据您试图查找的结果使用/创建索引。 对于您在不同时间尝试查找的不同字段,最好使用不同的索引

但请记住,索引会占用内存。索引越多,它就越能使用RAM。同时考虑索引的排序,同时进行更好的搜索。 在开发索引策略时,您应该深入了解应用程序的查询。在构建索引之前,先映射出要运行的查询类型,以便可以构建引用这些字段的索引。索引会带来性能代价,但对于大型数据集上的频繁查询来说,索引的代价是值得的。考虑应用程序中每个查询的相对频率,以及查询是否对索引进行了验证。 设计索引的最佳总体策略是使用与生产中运行的数据集相似的数据集分析各种索引配置,以查看哪些配置性能最佳。检查为集合创建的当前索引,以确保它们支持当前和计划的查询。如果不再使用索引,请删除该索引

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

  • 当索引包含查询扫描的所有字段时,索引支持查询。创建支持查询的索引可以大大提高查询性能

  • 要支持高效查询,请在指定索引字段的顺序和排序顺序时使用此处的策略

  • 当您的索引适合RAM时,系统可以避免从磁盘读取索引,从而获得最快的处理速度

  • 选择性是查询使用索引缩小结果范围的能力。选择性允许MongoDB将索引用于与完成查询相关的大部分工作


  • 谢谢你的详细解释。