情况是:在一个http GET请求中,我需要从一张表中选择我需要的信息并发送给客户端,同时我需要检索用户IP并插入数据库。我使用 Node.js 进行此实验。
问题是:有没有办法将这两个 Action 结合在一起?或者我是否必须连接并进行两个单独的查询?有没有办法渲染页面并在后台执行其他 INSERT 操作?最快的选择是什么?
app.get('/', function({
connect.query("SELECT column1, column2 FROM table;", function(err, ...
render("index", ...);
});
connect.query("INSERT INTO table2 SET ip=11111111;");
});
最佳答案
@skv 建议的过程方法很好,但您必须等待写入,然后才能进行读取并最终将结果返回给用户。
我主张采用另一种方法。
- 在内部将 IP 地址和时间戳放入数组或列表之类的队列中。
- 从数据库中读取数据并将结果返回给用户
- 创建一个后台作业,该作业将蚕食内部数组并执行插入
这有几个好处
- 用户更快地获得结果
- 如果系统被突发调用,则可以稍后完成写入
- 可以以数十或数百个插入的批量方式完成写入,从而减少写入一行所需的时间。
关于MySQL 从一个表中 SELECT 并在另一个表中 INSERT - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21980924/