我允许最终用户定义查询返回的行数(SELECT TOP (@x))。是否有可以在返回所有行的地方输入的值?或者,如果他们想要返回所有行,我是否必须在没有 TOP (@x) 的情况下动态创建查询?
我正在使用 SQL Server 2012。
Ken*_*her 18
好吧,如果您不使用PERCENT,则看起来TOP是BIGINT。这意味着您可以传入BIGINT的最大值,
SELECT TOP (9223372036854775807) * FROM table1
Run Code Online (Sandbox Code Playgroud)
我严重怀疑你永远不会看到这么大的桌子。我不确定这会对查询计划产生什么样的影响。
Mar*_*ith 12
你也可以考虑
SET ROWCOUNT @x;
SELECT Foo
FROM Bar
ORDER BY Baz;
Run Code Online (Sandbox Code Playgroud)
代替
SELECT TOP (@x) Foo
FROM Bar
ORDER BY Baz;
Run Code Online (Sandbox Code Playgroud)
您需要将 @x 设置0为禁用它。
这在数据修改语句中已被弃用,但在SELECT.
在 2012 年,针对ROWCOUNT0 与某个非零值的情况编制了不同的计划。
如果ORDER BY Baz仅在那里赋予意义TOP而不是为结果提供显示顺序,并且您没有支持此功能的索引,那么在这种0情况下拆分为两个查询将避免不必要的排序。
| 归档时间: |
|
| 查看次数: |
8472 次 |
| 最近记录: |