Size: a a a

pgsql – PostgreSQL

2020 August 06

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Андрей Казанцев
Есть тесты того на сколько хранимки превосходят обычные запросы?
В чем превосходят?
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
в скорости
источник

АК

Андрей Казанцев... in pgsql – PostgreSQL
На комбинацию select + update
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Они в pg не превосходят. С чего бы вдруг
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Хранимка выполняется точно так же как и обычный запрос. С планированием, и выполнением. Кэшэй планов и результатов нет - поэтому и разницы быть не должно
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Аггей Лоскутников
Они в pg не превосходят. С чего бы вдруг
С того, что хранимки без динамики - препаренные. Со всеми вытекающими, когда их много.
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Михаил Шурутов
С того, что хранимки без динамики - препаренные. Со всеми вытекающими, когда их много.
Препаренные это же не про хранимки все же
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Можно и обычный запрос в prepared statements внести. В некоторых случаях это даст прирост на сокращение времени планирования
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Но время выполнения будет тем же (за исключением несколько дней назад обсуждаемых неизменчивых функций)
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Аггей Лоскутников
Препаренные это же не про хранимки все же
препаренные запросы - это грубое упрощение, вот что говорит дока: https://postgrespro.ru/docs/postgresql/11/plpgsql-implementation
Надеюсь, это именно то, что надо вопрошавшему.
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Вообщем случае - стоит просто посмотреть на PREPARE
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Тут ещё важно соотношение времени планирования к времени выполнения. Возможно это даст экономию на спичках
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Хуже того, кеширование планов может привести к выбору куда худшего плана (который и выполняться будет куда дольше).
А вообще, использование хранимой функции вместо одного запроса всегда (кроме inlining) должно быть медленнее, чем тот же [prepared] запрос.
источник

2_

2flower _ in pgsql – PostgreSQL
Yaroslav Schekin
Хуже того, кеширование планов может привести к выбору куда худшего плана (который и выполняться будет куда дольше).
А вообще, использование хранимой функции вместо одного запроса всегда (кроме inlining) должно быть медленнее, чем тот же [prepared] запрос.
а как же IMMUTABLE  функции? они не кэшируются?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
2flower _
а как же IMMUTABLE  функции? они не кэшируются?
Нет, они не кешируются.
источник

2_

2flower _ in pgsql – PostgreSQL
Yaroslav Schekin
Нет, они не кешируются.
я может коряво спросил, но если есть запрос
select foo().... from ( .... select foo()....) где foo  IMMUTABLE, разве функция не будет вычислена 1 раз?
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Будет 1 раз, но результат не будет кэширован. То есть при повторном выполнении запроса - будет вычислена повторно
источник

2_

2flower _ in pgsql – PostgreSQL
Аггей Лоскутников
Будет 1 раз, но результат не будет кэширован. То есть при повторном выполнении запроса - будет вычислена повторно
не корректно в первый раз спросил.  ясно. спасибо.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
2flower _
я может коряво спросил, но если есть запрос
select foo().... from ( .... select foo()....) где foo  IMMUTABLE, разве функция не будет вычислена 1 раз?
Здесь ни запрос, ни результат не кешируются. Т.е. это совсем другое дело, т.е. (pseudo)constant folding, например.
источник

SG

Sergey Gr in pgsql – PostgreSQL
А можно в сессии поставить формат timestamptz? Так чтобы понимал '10-JAN-20 23.58.48.123456'
источник