动态准备的陈述是否有意义?

时间:2018-05-23 15:39:47

标签: node.js postgresql prepared-statement pg node-postgres

我想创建动态预处理语句,每个部分都是动态的,值,表和WHERE部分。

我使用nodejs + PostgreSQL和pg模块与PostgreSQL交谈。 pg模块提供了与node.js不同的语法,但我猜原理是一样的。这是基于官方示例here

//dynamic that can change 
let select = 'name , email, age';
let table = 'user';
let where = 'id=$1 AND gender=$2';
let values = [1,'female'];

//prepare
const query = {
  // give the query a unique name  
  name: 'fetch-user',
  text: 'SELECT' + select + 'FROM' + table + 'WHERE' + where,
  values: values
}

//execute
client.query(query)
  .then(res => console.log(res.rows[0]))
  .catch(e => console.error(e.stack))

我想知道这是否有意义,表现明智

我红了documentation,据我所知,通过准备好陈述的所有部分都是动态的,那么规划可能不那么有效,或根本没有效果。

我该怎么办?我应该保留这种动态语法吗?或者它没有任何意义,所以我必须创建多个预准备语句并将它们用于不同的表?

由于

1 个答案:

答案 0 :(得分:1)

这里应该没有性能问题。 "动态" SQL的一部分只是一个你传递给查询对象的字符串,所以要考虑的唯一性能就是解析text属性。您正在为数据库传递一份完整的语句;它解析不同变量的nodejs提出查询对象的文本属性。