0

我有一个节点 JS 脚本,它处理大量记录并将其与数据库(SQL Server)中的现有记录进行比较 NodeJS 动态构造查询。它从外部源获取数据并将其与我的数据库进行比较。示例:我从外部来源获取了 1000 条记录,假设所有 ID 现在都在名为“ar”的数组中。所以我生成一个查询:

select from my_table where ID in ('--list of all IDs from ar--')

当它是 1k、2k 和高达 10k 时,一切都很好。但是当它开始增加查询开始超时。

因此,我应用了某种分页机制,将数组拆分为固定大小并以块的形式对其进行迭代。元代码:

let total_results = 0
while i < ar.length {
let temp_result = execute_query("select from my_table where ID in ('--list of next 10K IDs from ar--')")
i += 5000
total_results += temp_result 
}

*以上只是元代码而不是真实代码。

所以我分块做,这样它就不会失败。

我的问题:

我可以在 SQL Server 中使用其他更好更快的解决方案吗?

4

1 回答 1

0

当前查询将在运行时解析传递给 in 子句的 id 集。id 数量越大,对性能的影响越大。

我会尝试先在临时表中插入 10K id。(如果需要,在 id 上创建索引)然后查询

select *
  from my_table 
 where id in (select id from temp_table)
于 2021-05-24T07:42:41.803 回答