Parse如何选择使用哪个Mongo索引?

时间:2018-05-03 16:37:01

标签: mongodb parse-platform mongodb-query parse-server

我刚刚继承了一个使用Mongo的Parse项目,因此我正在对Mongo和索引进行大量研究。

我登录到MLab并注意到工程师在我面前写了一堆索引,其中很多看似多余。

所以有几个问题:

  1. Parse(或Mongo)如何选择使用哪个索引来提高查询效率(我应该删除一堆这些索引,因为它们似乎是多余的)?
  2. 我已经创建了我在下面名为keywordIndexedListings的图片中指向的索引。有没有办法专门搜索该命名索引?我在文档中找不到任何可以说明的内容。
  3. enter image description here

1 个答案:

答案 0 :(得分:2)

TL; DR :我不知道如何让Parse选择索引,但您应该使用Mongo的explain()功能来衡量索引效果和用法,然后删除大量使用的次优的。此外,利用MLab的优秀支持团队来解决具体的优化问题。

据我所知,没有办法用Parse做一个Mongo hint()

相反,您需要在查询上运行explain()并查看正在使用的索引。如果您的查询使用的是次优索引,那么我不会认为您可以执行多项操作但删除它。

这里有measuring index use的一些信息,但是棘手的部分是将你的解析查询转换为mongo查询,以便你可以测试它们。

我发现的最简单方法是在云代码中使用beforeFind触发器。当我尝试翻译查询时,console.log()在此处,然后将其转录为mongo查询通常非常简单。

获得mongo查询后,您可以运行解释并查看正在使用的索引,这可以告知您决定删除/保留哪些索引。

除了保持干净的船上有你的索引(即没有次优/冗余索引),我不确定你能做多少工作来确保使用正确的索引。此外,如果您已获得付费的MLab计划,他们的支持非常有用,可以帮助您深入了解数据库性能的具体情况,并为您提供有关如何优化索引的提示。请务必通过特定的索引问题与他们联系 - 他们过去曾帮助过我。