Node.js 在节点中进行流式处理时postgres查询耗时较长:如何优化?

Node.js 在节点中进行流式处理时postgres查询耗时较长:如何优化?,node.js,postgresql,node-postgres,node-streams,pg-query,Node.js,Postgresql,Node Postgres,Node Streams,Pg Query,这是我在节点中查询数据的方式: const{Pool}=require('pg'); const QueryStream=require('pg-query-stream'); const CSVStream=require(“../path/to/CSVStream”); 常量池=新池({ 主机:“本地主机”, 港口:5432, 用户:“废话”, 密码:“废话”, 数据库:“prenoms”, }); 连接池((错误、客户端、完成)=>{ 如果(错误){ 犯错误; } const query=

这是我在节点中查询数据的方式:

const{Pool}=require('pg');
const QueryStream=require('pg-query-stream');
const CSVStream=require(“../path/to/CSVStream”);
常量池=新池({
主机:“本地主机”,
港口:5432,
用户:“废话”,
密码:“废话”,
数据库:“prenoms”,
});
连接池((错误、客户端、完成)=>{
如果(错误){
犯错误;
}
const query=new QueryStream('select*from public.prenoms_dep;');
const stream=client.query(查询);
流。在('end',done');
stream.pipe(CSVStream.stringify()).pipe(res);
});
我的CSVStream如下所示:

var-through=require('through');
exports.stringify=函数(op、sep、cl){
op=“”
sep='\n'
cl=“”
var流
,first=true
,anyData=false
流=通过(函数(数据){
anyData=true
试一试{
var strTemp=“”;
for(让对象值的值(数据)){
strTemp=strTemp+val.toString()+“,”;
}
strTemp=strTemp.slice(0,-1);
}捕捉(错误){
返回stream.emit('error',err)
}
如果(第一){
第一个=假;
var=”;
for(让对象键的值(数据)){
headers=headers+val.toString()+“,”;
}
headers=headers.slice(0,-1);
stream.queue(op+headers+sep+strTemp)
}else stream.queue(sep+strTemp)
},
功能(数据){
如果(!anyData)
流队列(op)
流队列(cl)
stream.queue(空)
})
回流
}
当我在pgAdmin中运行它时,SQL查询大约需要10秒才能运行。当通过节点时,至少需要3倍的时间

我如何在代码中找出浪费时间的地方


如何确保它所用的时间与pgAdmin中的大致相同?

如果一个表有很多记录,那么在pgAdmin中,与Node js相比,您不能获取所有记录。尝试将pgAdmin中的最大记录数设置为大于表中的记录数。非常有趣,谢谢-但在我的首选项中找不到该选项。你能帮我指出正确的方向吗?我只记得pgAdmin 3中的这个选项。如果你有pgAdmin 4,试着自己找到它。也许这对你有点帮助