我知道这个问题被问过这么多次,但有些问题对我来说仍然不清楚。 请勿将其标记为重复 。 我对View有点困惑。当我从视图中选择数据时,View是在内部创建表还是在内部执行sql查询?我知道视图被视为虚拟表并使用视图我也可以进行DML操作。 但是如果View每次从View中选择数据时内部执行sql查询,那么添加额外附加层的要求是什么。在View中我可以做复杂的连接查询,在存储过程(SP)中我也可以做。
所以我的意思是,代替View,我可以轻松地使用直接SP而不需要额外的努力,为该视图创建View和再次SP,并从c#后端调用。
我的意思是,使用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
我的问题是:我将使用来自c#后端的SP,那么哪个SP会更快? SP1或SP2?
答案 0 :(得分:0)
View更具体地处理某些部分数据。 SP更灵活。他们都使用查询优化,所以在你的情况下我认为不存在性能问题。 您可以阅读有关视图和SP之间差异的类似post。
答案 1 :(得分:0)
我认为视图是数据的过滤器或窗口。它可用于呈现数据库中内容的限制,简化或其他定制的“视图”。
你可以做任何你正在做的事情,但基本上,视图是在一组数据中查找的可重用方式,而存储过程是一组可重用的动作。