【问题标题】:How to batch delete in Knex?如何在 Knex 中批量删除?
【发布时间】:2020-04-03 07:44:13
【问题描述】:

我想使用 knex.js 执行批量删除。我们将 batchInsert 作为 API 方法,但没有涉及到 batchDelete。

我尝试了异步迭代并分别删除每一行。但它效率不高,因为我们有很多服务器到数据库的调用。我正在研究一种可能性,如果数据库有 100 条记录,那么每次都应该删除 25 条记录的批次

欢迎任何想法!

【问题讨论】:

  • 批量删除是什么意思? sql语句是什么?
  • 从 id=%id% 的 table1 中删除。我每次都有数百万条记录要删除。

标签: node.js knex.js batch-delete


【解决方案1】:

给定需要删除的项目的ID,您可以使用In SQL 语句。

它应该看起来像:

Delete from tableName Where id In (1,2,3,45,636,52);

为了使用knex构建这个查询

db('tableName')
  .delete()
  .whereIn('id', [1, 2, 3, 45, 636, 52]);

【讨论】:

  • 我也有同样的逻辑。但我正在寻找一种在并行模式下删除 id 的可能性。
  • 你怎么知道数据库引擎没有并行执行?
  • 我正在研究一种可能性,如果数据库有 100 条记录,那么每次都应该删除 25 条记录。
  • 所以,给定一个要删除的完整 id 列表,将其分块为 25 个项目(可以使用 lodash.chunk 完成),对其进行迭代,并为每个调用包含 25 个 id 的 whereIn。 ..
  • QQ:是否可以分块查询db('tableName') .delete() .whereIn('id', query);
猜你喜欢
  • 2017-03-25
  • 2012-06-04
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多