在 sql 中管理选择结果

Mah*_* KP 1 sql-server select

我们需要操作从选择查询返回的一组记录。这可以在:

  1. 通过将整个记录保存到表变量中,然后执行所需的过程。
  2. 我们可以这样做

    Select * from
       (select * from table where conditions) AS results
       where results.RowNum between ....
    
    Run Code Online (Sandbox Code Playgroud)

    那么在这种情况下最好的方法是什么..使用表变量或第二种方法。与第一种方法相比,使用第二种方法是否存在任何性能问题?

gbn*_*gbn 8

“这取决于”

使用表变量或临时表需要创建填充此对象的开销

但是,如果您需要多个处理步骤,那么与反复查询相同数据相比,这很小,尤其是当查询变得更加复杂时。

此外,对于多个步骤,使用表变量或临时表意味着处理所有步骤的同一组数据。通常,底层数据通常会因其他过程而发生变化。

最后,您是否尝试过这两种技术并针对您的实际情况进行了基准测试?我根据上述所有因素使用这两种方法。有时当然没关系...