首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内联函数和视图之间的区别

内联函数和视图之间的区别
EN

Stack Overflow用户
提问于 2009-06-12 18:51:53
回答 8查看 10.7K关注 0票数 5

我是一个使用函数的新手,在我看来,内联函数与视图非常相似。我说的对吗?

另外,我可以在函数中使用UPDATE语句吗?

EN

回答 8

Stack Overflow用户

发布于 2009-06-12 19:26:57

在阅读了这里的许多答案之后,我想指出,内联表值函数与任何其他类型的函数(标量或多行TVF)之间有很大的区别。

内联TVF只是一个参数化视图。它可以像视图一样进行扩展和优化。它不需要在“返回结果”或类似的东西之前实现任何东西(尽管,不幸的是,语法有一个RETURN

我发现内联TVF相对于视图的一个很大的好处是,它确实强制执行了所需的参数化,而对于视图,您必须假设调用者将适当地加入或限制视图的使用。

例如,我们在数据仓库中有许多大型事实表,其中包含一个典型的Kimball明星模型。我有一个以事实为中心的模型的视图,该模型调用时没有任何限制,将返回数亿行。通过使用带有适当参数化的内联TVF,用户不可能意外地请求所有行。两者的性能在很大程度上无法区分。

票数 17
EN

Stack Overflow用户

发布于 2009-06-12 19:20:15

没有区别。它们都被展开/取消嵌套到包含查询中。

注意:索引视图被认为是不同的,但仍然可以扩展,多值表函数是包含查询的黑盒。

Tony Rogerson: VIEWS - they offer no optimisation benefits; they are simply inline macros - use sparingly

Adam Machanic: Scalar functions, inlining, and performance: An entertaining title for a boring post

Related SO question: Does query plan optimizer works well with joined/filtered table-valued functions?

Scary DBA (at the end)

最后,函数中不允许写入表

编辑,在Eric Z Beard的评论和否决之后...

问题和答案(不仅仅是我的)不是关于标量udf的。"Inline“表示”内联表值函数“。截然不同的概念..。

票数 3
EN

Stack Overflow用户

发布于 2010-08-11 06:11:49

似乎没有人提到这方面。

您不能在内联函数中包含Update语句,但是您可以针对它们编写Update语句,就像它们是可更新的视图一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/988373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档