我正在考虑用存储过程或表值函数替换select语句。
目前,数据源具有巨大的选择语句。我认为使用存储过程或表值函数可以带来以下好处:
用存储过程或表值函数替换选择查询是一个好习惯吗?
一般来说,使用CAST,ISNULL,CASE,REPLACE,COALESCE以及加入其他4个表时,SELECT查询长度超过100行
答案 0 :(得分:1)
在OLEDB数据源中使用存储过程代替冗长的SELECT语句通常被认为是一种好习惯。还有其他一些缺点:
我在某处有连接错误引用,但它们没有修复,并且使用存储过程或表值函数提供了解决方法。
简而言之:**如果SELECT语句很大/很复杂/可变 - 使用存储过程**
- 虽然这个问题本质上是有效的 - 通常在Stackoverflow社区中不鼓励这类开放式问题
答案 1 :(得分:0)
为什么还没有人提到VIEW
呢?只需将select语句推送到数据库视图即可。然后,如果有变化,您不必打开包装,只需更改您的视图即可。
如果您需要某些程序逻辑,则仅使用存储过程或表值函数。
答案 2 :(得分:0)
当在SQL Server中执行任何SQL语句时,关系引擎首先查看过程高速缓存以验证是否存在同一SQL语句的现有执行计划。 SQL Server重用它找到的任何现有计划,节省了重新编译SQL语句的开销。如果不存在现有的执行计划,SQL Server将为查询生成新的执行计划。
使用存储过程可增加执行计划重用的可能性。