【发布时间】:2021-09-10 20:07:07
【问题描述】:
我在 SQL Server 中有如下表:
我有一个 API 每 10 秒接收 15,000 条记录以保存在上表中。好像userid 如果不存在用户标识插入记录,则更新该行。我使用以下代码用 pyodbc (在 python 中)编写每个用户的记录,这意味着我运行以下代码 15,000 次:
update Mytable
set buy = ?, model = ?, price = ?, color = ?, number = ?,
balance = ?, time = ?, type = ?,
where userid = ?
if @@ROWCOUNT = 0
insert into Mytable (userid, buy, model, price, color,
number, balance, time, type)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
上面的代码运行良好,但 15,000 条记录需要 700 秒。我只有这个 API,我没有关于用户数量的其他信息......
如何在 7 秒内保存 15,000 条记录?
【问题讨论】:
-
@GordThompson 我的问题是速度慢,不存储数据
-
看起来您一次处理一行,这肯定会很慢。批量上传行然后在服务器上合并它们会更快。
-
是的,批量处理。您需要一个将消息作为一组释放到 SQL 的缓冲区。您可能需要设置两个释放条件 - 缓冲区已满或计时器已过,以先到者为准。
标签: sql-server sql-update sql-insert pyodbc