查看或用户定义的功能?

Ale*_*lex 2 sql sql-server sql-server-2008 sql-view

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

我可以使用VIEW或UDF /用户定义函数来执行此操作.

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

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

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

还有其他理由选择其中一个或不重要吗?

Cad*_*oux 5

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

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

如果你最终希望有一个UDF用于参数化,你可以将它分层放在视图之上(所以没有代码重复),你会发现性能没有受到显着影响,因为优化器可以公平地组合视图和内联TVF成功.