使用存储过程而不是视图有啥优势吗?

Posted

技术标签:

【中文标题】使用存储过程而不是视图有啥优势吗?【英文标题】:Any advantage using stored proc over a view?使用存储过程而不是视图有什么优势吗? 【发布时间】:2011-02-15 09:49:13 【问题描述】:

我有一个执行相当复杂的 SELECT 语句的存储过程。存储过程接受查询中使用的参数:

ALTER PROCEDURE [dbo].[GetConnections]
    @equipmentId int,
    @equipmentPortNum int
AS
    SELECT ..SELECT QUERY HERE..
END

我正在考虑将其更改为视图,并在调用时过滤视图:

SELECT * from ConnectionsView Where EquipmentID = XXX and EquipmentPortNum = YYY

我的问题是:一个比另一个有什么优势 - 尤其是性能?

由于我将从 ORM 调用视图,因此查询将具有参数化的过滤器选项并导致缓存的执行计划,这意味着(除非我错了)存储的 proc 在观点 - 这是正确的吗?

【问题讨论】:

What is more powefull between a stored procedure and a view?的可能重复 为什么不是 UDF,因为这似乎是您所描述的(需要参数化的单个选择)?除非你的 ORM 不支持它们...... SQL-Server Performance: What is faster, a stored procedure or a view?的可能重复 【参考方案1】:

重复..我自己问的一个问题Here

还有一个 Here 由 Roberto Sebestyen 提出的问题

希望你能在这些中找到答案..

【讨论】:

以上是关于使用存储过程而不是视图有啥优势吗?的主要内容,如果未能解决你的问题,请参考以下文章

oracle中的存储过程有啥作用,该怎么理解?(数据更新的话用update语句不就完了吗)

建议在存储过程中放入啥逻辑?

将存储过程与 Dapper 一起使用有啥缺点吗?

在存储过程中使用表变量而不是仅从表或视图中选择?

数据库存储过程和视图一般啥时候用

带有实体框架的 ASP.Net Core Web API 使用存储过程有啥好处吗? [关闭]