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

为什么交叉应用函数比直接调用函数慢?

  •  0
  • Cosinus  · 技术社区  · 6 年前

    我有一个函数返回一个表: my_function(id integer)

    当我这样调用这个函数时:

    SELECT * FROM my_function(123)
    

    大约需要 1秒 执行。

    由于某些原因,我需要在视图中执行此函数,因此我需要绕过参数。

    当我执行这项任务时,大约需要 20秒 :

    SELECT p.*
    FROM my_table AS m 
      CROSS APPLY my_function(m.id) AS p
    WHERE m.id = 123
    

    注: m.id 是独一无二的,结果完全一样。

    为什么?

    0 回复  |  直到 6 年前