假设我有一个大的ID数组,大约10000个条目长。每个id是一个由数字组成的唯一字符串,大约20个字符长。 ['438122955667406858', '427968416155041792', '427968416155041792', '387734570570743849'...]
我还有一个数据库表,其中id对应于数组中的id。表中的id不是唯一的,表中可以有多个id匹配的行,如下所示:
所以问题来了:10000个ID的数组被分成10个左右的进程,所以每个进程都有1000个唯一的ID。每个进程必须从包含20+k个条目的数据库中请求,其id位于进程的id共享中的任何行。
最后一个问题是,最好构造一个大型的[op.or]语句,让sql server来完成这项工作:
table.findAll({
where: {
guild: {
[Op.or]: ThousandIDArray,
}
}
}).then(rows => rows.forEach(r => doSomething()))
或者请求所有的行,并对每个进程进行手动筛选?
table.findAll().then(rows => {
rows.forEach(r => {
if (ThousandIDArray.includes(r.guild)) doSomething();
})
})
1条答案
按热度按时间sqyvllje1#
如果我正确理解了您的问题,那么您将工作拆分为1000个id集并没有节省任何东西。只需将所有感兴趣的ID放在一个数组中,然后执行以下操作就更简单了:
后继运算符