javascript - typeorm 高效批量更新
问题描述
我有一个在数据库上使用的更新查询typeorm
,postgresql
如下面的一个,它经常在 20 多个项目的列表上执行(每 30 秒一次)。大约需要。更新时间为 12 秒,这对于我的限制来说已经很长了。
for (item of items) {
await getConnection().createQueryBuilder().update(ItemEntity)
.set({status: item.status, data: item.data})
.whereInIds(item.id).execute();
}
是否可以在单个查询中执行这样的批量更新,而不是迭代其他项目?如果是这样 - 如何?
item.status
并且item.data
每个项目都是独一无二的。
解决方案
使用纯 psql 这可以按照以下答案中的描述完成:使用 PostgreSQL 在同一查询中更新多行
但是,UpdateQueryBuilder
from Typeorm 不支持from
子句。目前,我认为原始查询是唯一的方法,即getManager().query("raw sql ...")
.
推荐阅读
- python - 重播后无法退出游戏循环(while 循环)
- openid-connect - Istio Mixer I/O 超时的应用程序身份和访问适配器
- python - 获取异常的名称以及错误
- processing - 文本在圆圈内移动的锯齿状运动(处理)
- angular - 从 Firestore 中删除
- java - 如何创建一个包含原始和复合主键作为表复合键(Spring JPA)的 JoinTable?
- java - Android Studio 构建错误:“prolog 中不允许内容。”
- c++ - 在 Ubuntu 中编译 SuiteSparse,安装 CHOLMOD 时中断
- java-8 - 无法向嵌入在 JBoss EAP 7.2 中的远程 ActiveMQ Artemis 发送消息
- autoencoder - BigDL:从自动编码器模型中获取隐藏层的输出