MongoDB 索引定义策略

MongoDB Index definition strategy

我有一个 MongoDB-based 数据库,里面有大约 100K 到 500K 的文本文档,而且 collection 还在不断增长。系统应支持按文档的不同字段进行查询,例如标题、类别、重要性等

该系统是接近 real-time 的系统,每 5-10 分钟获取一次新文档。

我的问题:
为了提高查询的性能,为文档的每个经常查询的字段(字段类型:小文本、数字、日期)定义一个单独的索引是个好主意吗?或者在 MongoDB?

中还有其他提高查询性能的最佳实践

您应该 use/make 根据您尝试 查找 的结果编制索引。 为您在不同时间尝试查找的不同字段设置不同的索引是个好主意。

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

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

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

创建时可以选择的一些策略:

  1. Create Indexes to Support Your Queries 当索引包含查询扫描的所有字段时,索引支持查询。创建支持查询的索引可以大大提高查询性能。

  2. Use Indexes to Sort Query Results 为了支持高效查询,在指定索引字段的顺序和排序顺序时,请使用此处的策略。

  3. Ensure Indexes Fit in RAM 当您的索引适合 RAM 时,系统可以避免从磁盘读取索引,您的处理速度最快。

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