Представление представляет собой виртуальную таблицу. Вы можете объединить несколько таблиц в представлении и использовать представление для представления данных, как если бы данные поступали из одной таблицы.
Хранимая процедура использует параметры для выполнения функции ... будь то обновление и вставка данных, или возвращение отдельных значений или наборов данных.
Создание представлений и хранимых процедур - содержит некоторую информацию от Microsoft относительно того, когда и зачем их использовать.
Скажем, у меня есть две таблицы:
tbl_user
С колоннами: user_id
, user_name
,user_pw
tbl_profile
С колоннами: profile_id
, user_id
,profile_description
Поэтому, если я обнаружу, что запрашиваю из этих таблиц МНОГО ... вместо того, чтобы выполнять соединение в КАЖДОМ куске SQL, я бы определил представление как:
CREATE VIEW vw_user_profile
AS
SELECT A.user_id, B.profile_description
FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO
Таким образом, если я хочу , чтобы запрос profile_description
на user_id
в будущем, все , что нужно сделать , это:
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
Этот код можно использовать в хранимой процедуре, например:
CREATE PROCEDURE dbo.getDesc
@ID int
AS
BEGIN
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO
Итак, позже я могу позвонить:
dbo.getDesc 25
и я получу описание для user_id
25, где 25
ваш параметр.
Очевидно, здесь гораздо больше деталей, это только основная идея.
Много информации доступно здесь
Вот хорошее резюме:
Хранимая процедура:
Вид:
источник
Для начала нужно понять, что это разные вещи.
Stored Procedures
лучше всего использовать дляINSERT-UPDATE-DELETE
заявлений. Принимая во вниманиеViews
, что используются дляSELECT
заявлений. Вы должны использовать их обоих.В представлениях вы не можете изменить данные.Некоторые базы данных имеют обновляемые представления, которые можно использоватьINSERT-UPDATE-DELETE
вViews
.источник
Представление SQL - это виртуальная таблица, основанная на запросе SQL SELECT. Представление ссылается на одну или несколько существующих таблиц базы данных или другие представления. Это моментальный снимок базы данных, в то время как хранимая процедура представляет собой группу операторов Transact-SQL, скомпилированных в единый план выполнения.
Представление - это простые демонстрационные данные, хранящиеся в таблицах базы данных, тогда как хранимая процедура - это группа операторов, которые могут быть выполнены.
Представление работает быстрее, так как оно отображает данные из таблиц, на которые есть ссылки, тогда как процедура хранилища выполняет операторы sql.
Проверьте эту статью: Просмотр против хранимых процедур . Именно то, что вы ищете
источник
Представление - это простой способ сохранить комплекс
SELECT
в базе данных.Процедура хранения используется, когда простого SQL просто недостаточно. Процедуры хранения содержат переменные, циклы и вызовы других хранимых процедур. Это язык программирования, а не язык запросов.
Взгляды статичны. Думайте о них как о новых таблицах с определенной разметкой, и данные в них создаются на лету с использованием созданного вами запроса. Как и в любой таблице SQL, вы можете сортировать и фильтровать ее с помощью
WHERE
,GROUP BY
иORDER BY
.Зависит от того, что вы делаете.
Зависит от базы данных. Простые представления просто запускают запрос и фильтруют результат. Но базы данных, такие как Oracle, позволяют создавать «материализованное» представление, которое в основном представляет собой таблицу, которая обновляется автоматически при изменении базовых данных представления.
Материализованное представление позволяет вам создавать индексы для столбцов представления (особенно для вычисляемых столбцов, которых нет нигде в базе данных).
Я не понимаю о чем ты говоришь.
источник
В дополнение к вышеприведенным комментариям я хотел бы добавить несколько моментов о представлениях.
источник
источник
Махеш не совсем прав, когда говорит, что вы не можете изменять данные в представлении. Так что с точки зрения Патрика
Я могу обновить данные ... в качестве примера я могу сделать любой из этих ...
или
Вы не можете вставить это представление, так как не все поля во всей таблице присутствуют, и я предполагаю, что PROFILE_ID является первичным ключом и не может быть NULL. Однако иногда вы можете ВСТАВИТЬ в вид ...
Я создал вид на существующую таблицу, используя ...
ЗАТЕМ
и
И ВСТАВКА и УДАЛЕНИЕ работали в этом случае
Очевидно, что вы не можете обновить какие-либо поля, которые агрегированы или вычислены, но любой вид, который является просто прямым, должен быть обновляемым.
Если представление содержит более одной таблицы, вы не можете вставить или удалить ее, но если представление является подмножеством только одной таблицы, то обычно это можно сделать.
источник
Основное отличие заключается в том, что когда вы запрашиваете представление, его определение вставляется в ваш запрос. Процедура также может выдавать результаты запроса, но он компилируется и так быстрее. Другой вариант - индексированные представления.
источник
@Patrick верен тому, что он сказал, но чтобы ответить на ваши другие вопросы, View создаст себя в памяти, и в зависимости от типа объединений, данных и, если будет выполнено какое-либо агрегирование, это может быть довольно жадное до памяти представление.
Хранимые процедуры выполняют всю свою обработку либо с использованием Temp Hash Table, например # tmpTable1, либо в памяти, используя @ tmpTable1. В зависимости от того, что вы хотите сказать, чтобы это сделать.
Хранимая процедура похожа на функцию, но вызывается напрямую по имени. вместо функций, которые фактически используются внутри самого запроса.
Очевидно, что большую часть времени таблицы памяти работают быстрее, если вы не получаете много данных.
источник