我有一个基于 MongoDB 的数据库,里面有大约 100K 到 500K 文本文档,并且该集合不断增长。系统应支持文档不同字段的查询,例如:标题、类别、重要性等
该系统是一个近乎实时的系统,每 5-10 分钟就会获取新文档。
为了提高查询性能,为每个查询定义一个单独的索引是一个好主意吗?频繁地文档的查询字段(字段类型:小文本、数字、日期)?或者 MongoDB 中还有其他提高查询性能的最佳实践吗?
您应该根据您尝试的结果使用/创建索引find。
对于您在不同时间尝试查找的不同字段使用不同的索引是一个非常好的主意。
但请记住,索引会占用您的 RAM。你创建的索引越多,它就会使用你的 RAM。还要考虑索引的排序,同时进行更好的搜索。
在开发索引策略时,您应该深入了解应用程序的查询。在构建索引之前,请规划出要运行的查询类型,以便可以构建引用这些字段的索引。索引会带来性能成本,但对于大型数据集的频繁查询来说,这是值得的。考虑应用程序中每个查询的相对频率以及查询是否证明索引合理。
设计索引的最佳总体策略是使用与您将在生产中运行的数据集类似的数据集来分析各种索引配置,以查看哪些配置性能最佳。检查为您的集合创建的当前索引,以确保它们支持您的当前和计划的查询。如果不再使用某个索引,请删除该索引。
创建时要选择的一些策略:
创建索引来支持您的查询 https://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/当索引包含查询扫描的所有字段时,索引支持查询。创建支持查询的索引可以大大提高查询性能。
使用索引对查询结果进行排序 https://docs.mongodb.org/manual/tutorial/sort-results-with-indexes/为了支持高效查询,请在指定索引字段的顺序和排序顺序时使用此处的策略。
确保索引适合 RAM https://docs.mongodb.org/manual/tutorial/ensure-indexes-fit-ram/当您的索引适合 RAM 时,系统可以避免从磁盘读取索引,并且您可以获得最快的处理速度。
创建确保选择性的查询 https://docs.mongodb.org/manual/tutorial/create-queries-that-ensure-selectivity/选择性是查询使用索引缩小结果范围的能力。选择性允许 MongoDB 使用索引来完成与完成查询相关的大部分工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)