одном случае запросы отправляет приложение, а в другом запросы зашиты внутри хранимой процедуры и приложение дёргает эту хранимую процедуру ? и если она есть то существенна ли она или на уровне погрешности ?
Меньше сетевого взаимодействия и чуток парсинга
возможно еще экономия на создании транзакций, одна в случае хранимки и N в случае отдельных запросов
но ведь и отдельные запросы можно отправить сразу несколько запросов, а потом commit
ещё кстати важно не путать функции и вьюсы. Просто я подумал, как вы описали, так это идеальный вьюс. А как я ответил, так это фукнция. зы жираф подумал :)
https://www.postgresql.org/docs/14/plpgsql-implementation.html Когда "просто" один раз вызываешь -- оптимизатор учитывает переданные значения/константы, и готовит план под них. В PL/pgSQL сервер подготавливает план один раз на сэссию (плюс-минус), потому без учёта значений переменных. Понятно, что иногда будет некоторая разница. Замечу, что некоторые API, в частности по-моему JDBC при некоторых настройках делают примерно такжэ как PL/pgSQL дажэ для единичного вызова -- сначала готовят план, потом ему биндят переменные. Дажэ для однократного вызова. Тогда получается, что план при вооде запроса в psql один, в PL/pgSQL и твоей программе -- другой.
но как я понимаю вьюс имеет главный плюс для кодера. Сам ничо не делаешь, запросы за тебя делает дба. Поэтому вьюс всегда лучше, когда ты на проекте имеешь базовика. Верно?
Обсуждают сегодня