2

我有一个场景,我将两个表合并为一个(使用 UNION),并从其他一些表中加入数据。

我可以使用 VIEW 或 UDF/用户定义函数来做到这一点。

考虑到到目前为止我的数据库中根本没有视图,但是有很多 UDF 用于全文搜索等,我很想在这种情况下也使用 UDF 来保持它“干净”。

但是,这完全是主观的,我想知道在这种情况下是否有更好的客观理由选择 VIEW 或 UDF。

我确实比较了两者的查询计划,它们完全相同,所以我不相信使用任何一个都会有性能损失或优势。

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

4

2 回答 2

5

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

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

如果您最终确实想要使用 UDF 进行参数化,您可以将它放在视图之上(因此没有代码重复),您应该会发现性能不会受到显着影响,因为优化器可以公平地组合视图和内联 TVF成功地。

于 2010-07-03T02:58:41.030 回答
2

通过使用这种场景作为视图,我看到的一个优点是索引它们并将它们用作“索引视图”,与传统视图不同的是,它创建了物理文件,因此在其中有大量行的情况下查询速度更快。使用它的真正效果是绕过所有行的连接和联合,而不是只为新行构建它们。

正如我们的朋友 Cade 所建议的那样,您可以反刍使用 UDF 中的视图来保持它的清洁,这并没有太大的不同。

希望这可以帮助 !

于 2010-07-03T03:53:54.103 回答