VIEW, поменяются данные то и VIEW тоже будет показывать обновлённые данные? И если ДА то чем они отличаются от процедур?
Да, данные в представлении изменятся.
А что общего у процедур и представлений?
В процедуру можно сохранить тот же селект что и во вьюхе. Только потом придётся юзать процедуру как подзапрос, а не как таблицу и все
Процедура нужна для реализации логической последовательности действий при работе с данными. Запросы в теле процедуры это лишь частный случай. Представление формируется на основе выборки данных. В представление можно вставлять данные при соблюдении ряда условий. Технически процедура может заменить представление, но практически это не всегда рационально.
а можно узнать почему иногда это иррационально?
Есть много различных ситуаций, можно долго рассказывать. Загуглите, этот вопрос не вчера родился: https://stackoverflow.com/questions/5194995/what-is-the-difference-between-a-stored-procedure-and-a-view
Смотря какой view (и, заодно, какой сервер баз данных). Для большынства серверов -- в обычных view поменяется, в материализованных -- не поменяется. Главное отличие от процэдур -- что view ведут себя как таблицы, в первую очередь по отношэнию к later/non-lateral join. Кроме того, обычно выборка по view оптимизируется примерно такжэ, как выборка из таблиц. Добиться такого через процэдуры обычно либо сложно либо невозможно. В общем, разные традицыи подхода к обработке.
Это средство организации кода на SQL
Запросы в процедуре не оптимизируются вместе с использующим еë запросом
В постгресе на языке SQL -- оптимизируются.
А можно ссылку на документацию, где это указано? А то я вот не помню такого совсем...
Не уверен, что это есть в документацыи. Но это, в общем, common knowledge. Вот тут -- самое близкое к какому-то системному описанию, когда это можэт происходить https://wiki.postgresql.org/wiki/Inlining_of_SQL_functions
А, но там указано, что оптимизация работает если функция состоит из одного sql-выражения, фактически это как раз view.
Ну, хоть иногда -- оптимизируются? Значит, оптимизируются.
Не совсем. Они оптимизируются для тривиальных случаев.
Обсуждают сегодня