2

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

该系统是一个接近实时的系统,每5-10分钟就会得到一个新的文件。

我的问题:
这是个好主意,为了提高查询的性能,可以定义每个频繁查询字段单独的索引(字段类型:小文本,数字,日期)的文件?或者在MongoDB中提高查询性能的另一个最佳实践?

+0

https://docs.mongodb.com/manual/applications/indexes/ – Rsh

回答

2

您应该根据您尝试的结果使用/制作索引找到。 在不同的时间为不同的领域设置不同的索引是非常好的主意。

但请记住,索引占用您的RAM。更多的是使索引更多,它会使用你的RAM。同时考虑索引的排序,同时做出更好的搜索。

在开发索引策略时,您应该对应用程序的查询有深入的了解。在生成索引之前,先制定要运行的查询类型,以便可以生成引用这些字段的索引。索引具有性能成本,但是对于大型数据集上的频繁查询而言,这些成本更值得。考虑应用程序中每个查询的相对频率以及查询是否证明索引。

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

一些策略选择,同时创造:

  1. Create Indexes to Support Your Queries 索引支持查询时,该指数包含由查询扫描的所有领域。创建支持查询的索引会大大提高查询性能。

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

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

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

+0

感谢您的详细解释。 –