问题描述
- NodeJS数据查询写入文件
-
有两个不同的数据库,需要条件查询一个数据库选出用户名,量比较大 大概300W左右
然后用这300W用户名查询另外一个库的数据,写入到最后的文件当中。用什么方法比较好呢?方法1:分页查询出用户名,然后查询另外一个库,查询结果写入文件
方法2:一次性查出用户名,写入文件当中,然后根据文件逐行查询,写入文件。
解决方案
用这300W用户名查询另外一个库的数据
这个查询是怎么查询的。
性能出现在查询结果过多还是查询速度过慢。
如果是后者,建议优化你的查询语句,sql server一类的数据库可以跨库join,性能很高。另外给name做index也有助于提高性能。
解决方案二:
或者大家有更好的方法?
async.series([
function(writeusers_cb){
//获取用户列表,写入文件
operater.list_usernames(type,online,offline,function(err,datalist){
if(err){
writeusers_cb(err,null)
}
else {
if(datalist.length > 0){
var chunks = [];
var length = 0;
var newLine = 'n';
for(var i=0,size=datalist.length;i<size;i++){
var value = datalist[i].username+newLine;
var buffer = new Buffer(value);
chunks.push(buffer);
length += buffer.length;
}
var resultBuffer = new Buffer(length);
for(var j=0,size=chunks.length,pos=0;j<size;j++){
chunks[j].copy(resultBuffer,pos);
pos += chunks[j].length;
}
fs.writeFile(filename,resultBuffer,function(err){
if(err){
writeusers_cb(err,null);
}
else {
writeusers_cb(null,1);
}
用buffer写入文件,300W的量很快。如果逐行写会特别慢。
解决方案三:
关注一下~~~~~~~~~~
解决方案四:
http://ask.csdn.net/questions/163017