繁体   English   中英

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

[英]Does a dynamic prepared statement makes sense?

我想创建动态的准备好的语句,每个部分都是动态的,值,表和WHERE部分。

我使用nodejs + PostgreSQL和pg模块与PostgreSQL通讯。 pg模块提供了与node.js一起使用的不同语法,但是我想原理是相同的。 这是基于此处的官方示例

//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))

我想知道从性能角度来看这是否有意义。

我将文档编成红色,并且我了解的是,通过使准备好的语句的所有部分动态化,计划可能不会那么有效,或者根本就无效。

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

谢谢

这里应该没有性能问题。 SQL的“动态”部分只是要传递给查询对象的字符串,因此要考虑的唯一性能是解析text属性。 您正在向数据库传递充分准备的语句; 是nodejs解决了不同的变量,以提供查询对象的text属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM