使用node.js批量删除mysql行

var Sequelize= require('sequelize') var sequelize = new Sequelize('db', 'user', 'password', {pool: { maxConnections: 5, maxIdleTime: 30 }}) var table = sequelize.define('User', { trip_paramid: Sequelize.INTEGER }, {timestamps:false}) table.sync({ force: false }).success(function() { table.destroy('`id` >= 5685321').success(function() { console.log("deleted"); }) table.destroy('`id` >= 9600000').success(function() { console.log("deleted"); }) table.destroy('`id` >= 15600000').success(function() { console.log("deleted"); }) table.destroy('`id` >= 20000000').success(function() { console.log("deleted"); }) table.destroy('`id` >= 25000000').success(function() { console.log("deleted"); }) table.destroy('`id` >= 35600000').success(function() { console.log("deleted"); }) }) 

我已经使用了sequelize作为一个ORM在这里批量删除行的条件。 这是工作。 但是现在我正在试图做同样的function,而不使用sequelize。 问题是因为我需要从现有的数据库中删除行。 在这种情况下使用sequelize成为一个问题。 我已经尝试批量删除而不使用续集它也在工作,但整个过程变得缓慢。

 var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 10, host : 'host', user : 'user', password : 'password', database : 'db', multipleStatements: true }); var id=57166; var query='delete from users1 where id='; bulkdelete(); function bulkdelete() { if(trip_paramid >=57166) { pool.query(query+ id+';'+query+(id+1)+';'+query+(id+1)+';'+query+(id+1)+';'+query+(id+1)+';', function(err, results) { if (err) throw err; trip_paramid++; bulkdelete(); console.log("deleted1"); }); } } 

任何人都可以提出一个想法来解决这个问题。 我需要加快这个过程(很多行不用任何ORM)

几个问题,你可以看到我的代码。

首先,将string连接到查询中是非常危险的(很容易让其他人攻击你的东西),而且它本身和内存pipe理也很慢。 您每次执行+操作时都会分配一个新string。

其次,数据库在集合操作方面performance出色,并且迅速执行; 为什么要一个接一个呢,如果你试图让所有的东西都比57166更大,那么就build立这样的查询吧。

delete from users where id >= 57166;

如果这需要是一个实际参数,请使用mysql2驱动程序中描述的准备好的语句: https : //github.com/sidorares/node-mysql2

您的查询将如下所示:

delete from users where id >=?;

并且您将通过最小ID号作为参数。