2015-08-05 3 views
-4

Я знаю, что этот вопрос задают так много раз, но некоторые вопросы мне пока не понятны. Просьба не отмечать его как дубликаты. Я немного путаюсь с View. Является ли View create table внутренне или выполняется sql-запрос внутри, когда я выбираю данные из представления? Я знаю, что вид рассматривается как виртуальная таблица и с помощью представления я также могу выполнять операцию DML. Но если View выполнять sql-запрос внутренне каждый раз, когда я выбираю данные из View, то в чем заключается требование добавления дополнительного дополнительного слоя. В представлении я могу выполнить сложный запрос соединения и в хранимой процедуре (SP), также я могу это сделать.В чем разница между хранимой процедурой и представлением (Sql Server)? (Повтор)

Поэтому я имею в виду, что вместо View я могу легко использовать прямой SP, не прилагая дополнительных усилий, создавая View и снова SP для этого View и вызывающего из C# back end.

Я имею в виду, что использование View будет быстрее или нет, я не знаю. Это может быть так, как это рассматривается как виртуальная таблица, пожалуйста, проясните эти вещи.

Example: 

CREATE TABLE EMPLOYEE(Emp_ID INT PRIMARY KEY CLUSTERED,Address VARCHAR(50) NOT NULL) 

INSERT INTO EMPLOYEE VALUES(1,'West BEngal'); 
INSERT INTO EMPLOYEE VALUES(2,'Bihar'); 
INSERT INTO EMPLOYEE VALUES(3,'MP'); 

VIEW: 
--- 
CREATE VIEW vw_all_Employee 
AS 
    SELECT Emp_ID, Address FROM EMPLOYEE; 

SP1: 
--- 
CREATE PROCEDURE sp_select_All_Employee 
AS 
BEGIN 
    SELECT Emp_ID, Address FROM EMPLOYEE; 
END 

SP2(On VIEW): 
---------- 
CREATE PROCEDURE sp_select_All_Employee1 
AS 
BEGIN 
    SELECT Emp_ID, Address FROM vw_all_Employee; 
END 

Мой вопрос: я буду использовать SP из C# задний конец, так который SP будет быстрее? SP1 или SP2?

+2

a sproc - это код. он может делать запросы или может делать что-либо еще. представление в основном хранится QUERY и может использоваться как «виртуальная» таблица. вы не можете сравнивать их, потому что они совершенно разные вещи. –

+2

Примечание: ['CREATE PROCEDURE'] (https://msdn.microsoft.com/en-us/library/ms187926.aspx):« Избегайте использования префикса ** sp _ ** при процедуре именования. Этот префикс используется SQL Server для обозначения системных процедур » –

+0

В зависимости от вашей версии SQL Server вы также можете иметь индексированное представление, в котором хранятся результаты запроса, поэтому он быстрее запрашивает, но влияет на обновление таблиц (таблиц) . – Mant101

ответ

0

A View более специфичен для обработки некоторой части данных. СП более гибкие. Оба они используют оптимизацию запросов, поэтому в вашем случае я думаю, что проблем с производительностью не будет. Вы можете прочитать похожие post о различиях между видами и СП.

0

Я думаю о представлении в виде фильтра или окна для данных. Его можно использовать для представления ограниченного, упрощенного или иначе настроенного «представления» того, что находится в базе данных.

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