代码之家  ›  专栏  ›  技术社区  ›  Garry Shutler

顶部与集合行数

  •  11
  • Garry Shutler  · 技术社区  · 17 年前

    TOP SET ROWCOUNT 还是他们只是以同样的方式被处死?

    2 回复  |  直到 17 年前
        1
  •  11
  •   Juan    7 年前

    需要注意的一点是,一旦 set rowcount 0 一旦你做完了。


    编辑(发表马丁的评论)

    范围 SET ROWCOUNT 仅适用于当前程序。这包括当前过程调用的过程。它还包括通过 EXEC SP_EXECUTESQL 因为它们被认为是“子”作用域。

    注意 设置行数 在一个 BEGIN/END 范围,但它超出了范围。

    create proc test1
    as
    begin
        begin
        set rowcount 100
        end
        exec ('select top 101 * from master..spt_values')
    end
    GO
    
    exec test1
    select top 102 * from master..spt_values
    

    结果=100行,然后是102行

        2
  •  4
  •   ulath    12 年前

    根据BOL,关于性能的另一个注意事项是:

    作为选择语句的一部分,查询优化器可以在查询优化过程中考虑顶部或FETCH子句中的表达式的值。由于SET ROWCOUNT在执行查询的语句外部使用,因此在查询计划中不能考虑其值。

    Article on BOL