我正在研究一个nestjs应用程序,我在这样的api中使用猫鼬查找查询,但是当反复轮询时,查询时间每次都在增加。最初几次以毫秒为单位,然后以秒为单位,最后以分钟为单位,挂起整个应用程序。但这种情况只发生在没有大量记录的数据对中。对于较小的对则不会。
我尝试分别应用address
和chainId
的索引,并将其合并,但无济于事。这是我的查询
const swaps = await this.PairSwapModel.find(
{
pairAddress: address.toLowerCase(),
chainId
},
{
hash: 1,
amount0In: 1,
amount0Out: 1,
amount1In: 1,
amount1Out: 1,
amountUSD: 1,
priceInToken0: 1,
priceInToken1: 1,
timestamp: 1,
token0Address: 1,
token1Address: 1,
}
).sort({ timestamp: -1 })
总的来说,我认为这里的信息太少了。如果您为有问题的查询版本提供.explain("executionStats")
输出,那么我们将能够提供更多帮助。
话虽如此,下面这句话可能很重要:
我尝试分别应用
address
和chainId
的索引,但没有效果。
根据问题中的信息,似乎没有名为"address
";在你的文档中。相反,字段名似乎是pairAddress
。我们也不知道代码片段中chainId
变量的值是多少。如果我们假设它是同名字段(例如chainId: <value>
)上的某个相等过滤器,那么以下索引应该可以提高性能:
{ pairAddress: 1, chainId: 1, timestamp: -1 }