[英]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.