什么时候在SQL Server中使用函数或存储过程?
什么时候在SQL Server中使用函数或存储过程?
这个问题已经有答案了:
在SQL Server中什么时候应该使用函数,什么时候应该使用存储过程?
我想知道人们的想法和经验。还想知道何时使用视图。我不是在寻找这些数据库对象的定义。讨论实际情况将是很好的。
admin 更改状态以发布 2023年5月21日
在我看来,仅仅为了读取数据而使用SP是一种非常不好的习惯。你必须区分以下三种情况:
-
SP:批处理,通常是多语句。你可以(几乎)做任何事情。最大的缺点是你无法轻松地继续使用SP的结果,而且如果你想在后续查询中使用SP的返回值,你总是必须将其写入正确声明的表(实际的、临时的或变量)。这可能会导致很多容易出错的敲打。此外,优化器无法有效地处理这个。
-
TV-UDF(带表值的用户定义函数):必须注意到存在两种风味:单语句(即带即用)或多语句。第一个好,第二个(几乎所有情况下)非常糟糕!与视图相比的优势在于,参数及其处理是预编译的。
-
视图:这与即带即用的TV-UDF一样好。你可以使用模式绑定声明它,几乎可以像处理表一样处理它(索引等)......
总之:将SP用于UPDATE、DELETE、任何类型的数据或结构操作,但不要只为了读取而使用。