我是一个使用函数的新手,在我看来,内联函数与视图非常相似。我说的对吗?
另外,我可以在函数中使用UPDATE语句吗?
发布于 2009-06-12 19:26:57
在阅读了这里的许多答案之后,我想指出,内联表值函数与任何其他类型的函数(标量或多行TVF)之间有很大的区别。
内联TVF只是一个参数化视图。它可以像视图一样进行扩展和优化。它不需要在“返回结果”或类似的东西之前实现任何东西(尽管,不幸的是,语法有一个RETURN。
我发现内联TVF相对于视图的一个很大的好处是,它确实强制执行了所需的参数化,而对于视图,您必须假设调用者将适当地加入或限制视图的使用。
例如,我们在数据仓库中有许多大型事实表,其中包含一个典型的Kimball明星模型。我有一个以事实为中心的模型的视图,该模型调用时没有任何限制,将返回数亿行。通过使用带有适当参数化的内联TVF,用户不可能意外地请求所有行。两者的性能在很大程度上无法区分。
发布于 2009-06-12 19:20:15
没有区别。它们都被展开/取消嵌套到包含查询中。
注意:索引视图被认为是不同的,但仍然可以扩展,多值表函数是包含查询的黑盒。
Adam Machanic: Scalar functions, inlining, and performance: An entertaining title for a boring post
最后,函数中不允许写入表
编辑,在Eric Z Beard的评论和否决之后...
问题和答案(不仅仅是我的)不是关于标量udf的。"Inline“表示”内联表值函数“。截然不同的概念..。
发布于 2010-08-11 06:11:49
似乎没有人提到这方面。
您不能在内联函数中包含Update语句,但是您可以针对它们编写Update语句,就像它们是可更新的视图一样。
https://stackoverflow.com/questions/988373
复制相似问题