Имеет ли смысл динамическое подготовленное утверждение? - PullRequest
0 голосов
/ 23 мая 2018

Я хочу создать динамически подготовленные операторы, чтобы каждая часть была динамической, значения, таблица и часть 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))

Мне было интересно, будет ли это иметь смысл, с точки зрения производительности .

Я прочитал документацию и, насколько я понимаю, благодаря динамичности всех частей подготовленного оператора планирование может быть не столь эффективным или совсем неэффективным.

Что мне делать?Должен ли я сохранить этот динамический синтаксис?Или это не имеет никакого смысла, поэтому мне нужно создать несколько подготовленных операторов и использовать их для разных таблиц?

Спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Здесь не должно быть проблем с производительностью.«Динамическая» часть вашего SQL - это просто строка, которую вы передаете в объект запроса, поэтому единственное, что нужно учитывать, - это разрешение свойства text.Вы передаете своей базе данных полностью подготовленное заявление;это nodejs, который разрешает различные переменные для получения свойства text объекта запроса.

...