theo789
Metz
采纳率91.7%
2015-01-20 13:32 阅读 3.5k
已采纳

NodeJS数据查询写入文件

1

有两个不同的数据库,需要条件查询一个数据库选出用户名,量比较大 大概300W左右
然后用这300W用户名查询另外一个库的数据,写入到最后的文件当中。用什么方法比较好呢?

方法1:分页查询出用户名,然后查询另外一个库,查询结果写入文件

方法2:一次性查出用户名,写入文件当中,然后根据文件逐行查询,写入文件。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2015-01-20 14:01

    用这300W用户名查询另外一个库的数据
    这个查询是怎么查询的。
    性能出现在查询结果过多还是查询速度过慢。

    如果是后者,建议优化你的查询语句,sql server一类的数据库可以跨库join,性能很高。另外给name做index也有助于提高性能。

    点赞 1 评论 复制链接分享
  • theo789 Metz 2015-01-20 13:36

    或者大家有更好的方法?
    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的量很快。如果逐行写会特别慢。

    点赞 1 评论 复制链接分享
  • zhang_xinglong 无常w 2015-09-23 10:32

    关注一下~~~~~~~~~~

    点赞 评论 复制链接分享
  • yu_fang1987 yu_fang1987 2015-10-19 12:57
    点赞 评论 复制链接分享

相关推荐