Я знаю, что этот вопрос задают так много раз, но некоторые вопросы мне пока не понятны. Просьба не отмечать его как дубликаты. Я немного путаюсь с 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?
a sproc - это код. он может делать запросы или может делать что-либо еще. представление в основном хранится QUERY и может использоваться как «виртуальная» таблица. вы не можете сравнивать их, потому что они совершенно разные вещи. –
Примечание: ['CREATE PROCEDURE'] (https://msdn.microsoft.com/en-us/library/ms187926.aspx):« Избегайте использования префикса ** sp _ ** при процедуре именования. Этот префикс используется SQL Server для обозначения системных процедур » –
В зависимости от вашей версии SQL Server вы также можете иметь индексированное представление, в котором хранятся результаты запроса, поэтому он быстрее запрашивает, но влияет на обновление таблиц (таблиц) . – Mant101