代码之家  ›  专栏  ›  技术社区  ›  Alex

视图还是用户定义的函数?

  •  2
  • Alex  · 技术社区  · 15 年前

    我有一个场景,我将两个表合并为一个表(使用UNION),还将来自其他一些表的数据连接起来。

    考虑到目前为止我的数据库中没有任何视图,但是有相当多的用于全文搜索之类的自定义项,我很想在这个场景中使用自定义项来保持它的“干净”。

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

    2 回复  |  直到 15 年前
        1
  •  5
  •   Cade Roux    15 年前

    我总是按照复杂程度来使用特征。在性能概要和安全管理方面,视图相对简单。我可能会先用它。

    我假设您讨论的是一个内联表值的UDF,它几乎具有相同的性能特征。UDF上的安全性有点不同,您不能使用instead of触发器来对视图进行“插入”。UDF的一个好处是,您可以强制提供参数,从而确保使用模式如预期的那样,而可以在没有任何条件的情况下(可能是意外的)查询视图。

    如果您最终想要有一个用于参数化的UDF,那么您可以将它放在视图的顶部(这样就不会有代码重复),并且您应该会发现性能不会受到显著影响,因为优化器可以相当成功地组合视图和内联TVF。

        2
  •  2
  •   Baaju    15 年前

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

    正如我们的朋友凯德所建议的,你可以在自定义项中使用一个视图来保持它的干净,并且没有太大的不同。