Хранимые процедуры против. Просмотры

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

Считаете ли вы производительность и другие аспекты, когда и почему я должен отдать предпочтение другому?

Ответ 1

Хорошо, я бы использовал хранимую процедуру для инкапсуляции кода и прав управления.

Вид на самом деле не инкапсуляция: это макрос, который расширяется. Если вы начнете присоединяться к представлениям довольно скоро, у вас появятся ужасные запросы. Да, их можно ПРИСОЕДИНИТЬ, но они не должны...

Считая, что представления - это инструмент, который имеет свое место (например, индексированные представления), например, сохраненные procs.

Ответ 2

Сохраненная процедура: Хранимые процедуры представляют собой предварительно скомпилированные запросы базы данных, которые повышают безопасность, эффективность и удобство использования базы данных клиент/сервер приложений. Разработчики определяют сохраненные процедуры с точки зрения входных и выходных переменных. Затем они компилируются код на платформе базы данных и сделать его доступным для использования разработчиков для использования в других средах, таких как веб-приложения. Все основные платформы баз данных, включая Oracle, SQL Server и MySQL поддерживает хранимые процедуры. Основные преимущества этой технологии являются существенным выигрышем в производительности от прекомпилированного выполнения, снижение трафика клиент/сервер, повышение эффективности разработки с повторное использование кода и абстракция и элементы управления безопасностью, присущие предоставление пользователям прав на определенные хранимые процедуры вместо базовые таблицы базы данных.

Представления: Представления базы данных позволяют создавать "виртуальные таблицы", которые генерируются "на лету" при их доступе. Вид сохраняется на сервер базы данных как оператор SQL, который извлекает данные из одного или больше таблиц и (необязательно) выполняет преобразования по этим данным. Затем пользователи могут запросить представление так же, как и любую реальную базу данных Таблица. Представления часто используются для облегчения предоставление пользователям доступа к определенному виду таблицы базы данных без предоставления доступа к самой основной таблице.

enter image description here

Ответ 3

Преимущество представлений заключается в том, что их можно обрабатывать точно так же, как и таблицы. Вы можете использовать WHERE для получения от них фильтрованных данных, JOIN в них и т.д. Вы можете даже вставить данные в них, если они достаточно просты. Представления также позволяют вам индексировать свои результаты, в отличие от хранимых процедур.

Ответ 4

Основным преимуществом хранимых процедур является то, что они позволяют вам включать логику (скриптинг). Эта логика может быть такой же простой, как IF/ELSE или более сложной, такой как DO WHILE, SWITCH/CASE.

Ответ 5

A View - это как один сохраненный запрос запроса, он не может содержать сложную логику или несколько операторов (кроме использования union и т.д.). Для любых сложных или настраиваемых параметров вы выбираете хранимые процедуры, которые обеспечивают гораздо большую гибкость.

Общепринято использовать комбинацию представлений и хранимых процедур в архитектуре базы данных и, возможно, по разным причинам. Иногда это позволяет добиться обратной совместимости в sprocs при повторной разработке схемы, иногда для того, чтобы сделать данные более манипулируемыми по сравнению с тем, как она хранится изначально в таблицах (de-noramlized views).

Тяжелое использование представлений может ухудшить производительность, поскольку для SQL Server это затрудняет оптимизацию этих запросов. Однако можно использовать индексированные представления, которые могут фактически повысить производительность при работе с объединениями так же, как индексированные таблицы. Существуют гораздо более жесткие ограничения на разрешенный синтаксис при реализации индексированных представлений и много тонкостей в процессе их работы в зависимости от выпуска SQL Server.

Подумайте о том, что представления больше похожи на таблицы, чем хранимые процедуры.

Ответ 6

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

Представления базы данных отлично подходят для использования, когда вы хотите предоставить подмножество полей из данной таблицы, разрешите пользователям MS Access просматривать данные без риска их изменения и обеспечить, чтобы ваши отчеты собирали генерируемые результаты.

Ответ 7

Представления полезны, если существует определенная комбинация таблиц или подмножество данных, которые вы последовательно хотите запросить, например, пользователь, связанный с его разрешениями. На самом деле представления должны рассматриваться как таблицы.

Хранимые процедуры представляют собой фрагменты кода sql, которые "скомпилированы", как они есть, для выполнения более оптимально, чем случайный другой запрос. План выполнения кода sql в хранимой процедуре уже построен, поэтому выполнение выполняется немного более плавно, чем обычный SQL-запрос.

Ответ 8

Сохраненная процедура. Хранимые процедуры представляют собой предварительно скомпилированные запросы базы данных, которые повышают безопасность, эффективность и удобство использования клиентских/серверных приложений базы данных. Разработчики определяют хранимую процедуру с точки зрения входных и выходных переменных. Затем они компилируют код на платформе базы данных и делают его доступным для разработчиков приложений для использования в других средах, таких как веб-приложения. Все основные платформы баз данных, включая Oracle, SQL Server и MySQL, поддерживают хранимые процедуры. Основными преимуществами этой технологии являются существенные выигрыши в производительности от прекомпилированного выполнения, сокращение трафика клиент/сервер, повышение эффективности разработки от повторного использования кода и абстракции и элементы управления безопасностью, присущие предоставлению прав пользователям на определенные хранимые процедуры, а не на базовые таблицы базы данных.

Просмотры: Представления базы данных позволяют создавать "виртуальные таблицы", которые генерируются "на лету", когда к ним обращаются. Представление хранится на сервере базы данных как оператор SQL, который извлекает данные из одной или нескольких таблиц и (необязательно) выполняет преобразования по этим данным. Затем пользователи могут запросить представление так же, как и любую реальную таблицу базы данных. Представления часто используются для облегчения проблем безопасности, предоставляя пользователям доступ к определенному представлению таблицы базы данных без предоставления доступа к самой основной таблице.

Ответ 9

Два обоснования.

Используйте хранимую процедуру вместо представления, если вы не хотите, чтобы вставка была возможной. Вставка в представление может не дать того, что, по-видимому, делает. Он будет вставляться в таблицу, строка, которая может не соответствовать запросу из представления, строка, которая не будет отображаться в представлении; вставлен где-то, но не там, где это выглядит.

Используйте представление, если вы не можете использовать результат хранимой процедуры из другой хранимой процедуры (я никогда не мог заставить последнее работать, по крайней мере, с MySQL).

Ответ 10

Представления relvars, содержащие кортежи.

Хранимые процедуры - это скрипты.