за определённый месяц.
Арх ругает, что функции писать нельзя, тк они Не Кешируются, а вот вьюхи Кешируются!
Так ли это?
И если даже не Кешируются, имеет ли это значение, если из 20к клиентов, дай бог один из 100 раз в нелелю посмотрит этот отчёт.?
Всё с точностью до наоборот. Для запросов в функциях строится препаред план, для вьюх нет. По сути вьюха - это просто синтаксическая подстановка, облегчающая написание запросов (если мы конечно не про materialized view)
> Арх ругает, что функции писать нельзя, тк они Не Кешируются, а вот вьюхи Кешируются! Может, стоит спросить его, о чём это он? Из того, что имеет существенное значение в подобных ситуациях, кэшируются только данные (прочитанные с диска блоки, например). > имеет ли это значение Нет. IMNSHO, В большинстве случаев подобное крохоборство совершенно несущественно, это как минимум.
Так вот, Кешируются данные запросов? (только блоки наверное да, но тогда и запросы внутри функции тоже)
См. ответ @knizhnik выше. IMHO, вообще (по возможности / пока это не чересчур сложно), подобные задачи (отчёты), если есть выбор, лучше решать view, затем inlinable SQL function, а если и это не подходит — уже использовать императивный код в pl/pgsql.
> В том что он сказал что функции наоборот лучше Где он написал, что view-хи "наоборот лучше"? Он же просто ответил на конкретный вопрос про кэширование (планов), а вот далеко идущий вывод Вы придумали сами, извините. ;( > Мне намного удобнее функции. Да и пользуйтесь, почему же нет? Я писал о случаях, когда одним запросом без параметров (это view), или одним запросом с параметрами (это inlinable SQL function) это сделать достаточно просто / удобно. Если нет — зачем с ними мучиться, особенно в ситуациях, когда "если из 20к клиентов, дай бог один из 100 раз в нелелю посмотрит этот отчёт"?! Полезнее деньги работодателя время не на что потратить, что ли? ;)
Обсуждают сегодня