我有一个场景,将两个表组合成一个表(使用Union),并加入其他一些表的数据。

我可以使用视图或UDF/用户定义的功能来执行此操作。

考虑到到目前为止我在数据库中根本看不到视图,但是有很多UDF用于完整的搜索等等,我也很想在这种情况下使用UDF来保持“清洁”。

但是,这完全是主观的,我想知道在这种情况下是否有更好的客观原因可以选择视图或UDF。

我确实比较了两者的查询计划,它们是完全相同的,所以我认为使用任何一个都没有性能罚款或优势。

是否有其他理由选择一个,或者无关紧要?

有帮助吗?

解决方案

我总是按顺序使用功能。在性能配置文件和安全管理方面,视图相对简单。我可能会先使用它。

我假设您正在谈论一个内联表值UDF,该表格几乎具有相同的性能特征。 UDF上的安全性有些不同,您不能有触发器能够在视图上进行“插入”。 UDF的好处是您可以强制提供参数,从而确保使用模式如预期的,而可以在没有任何标准的情况下查询视图(也许是偶然)。

如果您最终想拥有一个用于参数化的UDF,则可以将其分层到视图之上(因此没有代码重复),并且应该发现性能没有显着影响,因为优化器可以合理地组合视图和内联电视FTTT tvf。成功地。

其他提示

我通过使用这种情况作为视图来看到的一个优势是索引它们并将它们用作“索引视图”,其中与传统视图不同的是,在其中有大量的行,因此查询更快。使用此功能的效果是绕过所有行的联合和工会,而仅对新行构建它们。

正如我们的朋友Cade所建议的那样,您使用UDF内部的视图来保持清洁,并且没有太大不同。

希望这可以帮助 !

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top