【问题标题】:Will table-valued functions act like views, in being optimized by the database engine?表值函数是否会像视图一样被数据库引擎优化?
【发布时间】:2014-01-03 23:32:23
【问题描述】:

我只看到一条评论似乎可以解决这个问题,那就是内联函数和视图都被引擎扩展了。不知道这是否是我需要的。

我正在将 Qlikview 中的一些内容转换回 SQL Server,并尝试优化速度。

我将所有内容都放入表返回函数中,并使用视图作为 Qlikview 调用的最终对象,只是为了避免界面过于混乱。

我想知道我是否会因为使用这些功能而伤到自己的脚。几乎所有这些都是内联的,其中有几个是多语句。

所以,我想,我需要知道的是,如果一个视图由几个函数组成,引擎是否会根据最终的 where 子句对函数进行过滤,这样就不会从每个函数中提取所有内容,而是只有符合 where 语句的东西。我的意思是一路走来,而不是最后一刻。

【问题讨论】:

    标签: sql-server view user-defined-functions


    【解决方案1】:

    内联函数的作用类似于参数化视图。查询处理器已经具有相关连接(源表引用外部列的连接)的功能,因为您已经可以使用CROSS APPLY 编写这些连接。加入内联 TVP 就像将 CROSS APPLY 写入查询优化器。

    多值函数不会那样做。确保它们不会被太频繁地调用,并且不会因为没有将它们内联而丢失太多。他们不会从整体的优化器转换中受益。

    【讨论】:

      猜你喜欢
      • 2016-08-12
      • 2011-08-12
      • 2017-11-04
      • 2011-02-09
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多