为人方正实诚
为人方正实诚
  • 发布:2024-11-05 00:48
  • 更新:2024-11-06 19:20
  • 阅读:69

【报Bug】聚合操作的下,在match中添加过滤条件时,使用了or后,查询速度大大降低,都是5秒后才会出结果,删除or后变成一秒出结果,请问一下这能优化一下吗

分类:uniCloud

产品分类: uniCloud/支付宝小程序云

示例代码:

比如有一个数据库A,在一次请求的基础上需要查询两次,一次按照时间来查询30条数据,一个随机查询30条数据,然后重复请求两次,响应速度大大降低,然后合并在一个后用or,同样也会大大降低查询速度,这种之前在阿里云不会有这个问题,这个问题可以优化一下吗?
let res = await DB.collection('A').aggregate()

.match({
time: command.gt(time),
user: "ok",
})
.lookup({
from: 'user',
let: {
user_id: '$id',
},
pipeline: aggregate.pipeline()
match(command.expr(aggregate.and([
aggregate.eq(['$id', '$$user_id']),
])))
.project({
id: 1,
})
.done(),
as: "data_user",
})
.sample({
size: 30,
})
.end()、

===========================================================================

let Res = await DB.collection('A').aggregate()

.match({
user: "ok",
})
.lookup({
from: 'user',
let: {
user_id: '$id',
},
pipeline: aggregate.pipeline()
match(command.expr(aggregate.and([
aggregate.eq(['$id', '$$user_id']),
])))
.project({
id: 1,
})
.done(),
as: "data_user",
})
.sample({
size: 30,
})

.end()、

操作步骤:

如上面所说

预期结果:

速度提升

实际结果:

没有提升

bug描述:

聚合操作的下,在match中添加过滤条件时,使用了or后,查询速度大大降低,都是5、6秒后才会出结果,删除or只保留简单的过滤条件后变成一秒出结果,请问一下这能优化一下吗

2024-11-05 00:48 负责人:无 分享
已邀请:
DCloud_uniCloud_CRL

DCloud_uniCloud_CRL

理论上没有不会有这么大的区别。有具体的代码或者截图吗,可以发来看看

为人方正实诚

为人方正实诚 (作者) - uin-app


要回复问题请先登录注册