SQL Server 2008中的分页

时间:2010-12-11 07:34:19

标签: sql-server sql-server-2008 pagination

我是SQL服务器的新手。保留this个问题作为参考。我怀疑是什么   为什么Microsoft Sql服务器没有像Mysql中的限制,现在他们正在强制编写SP或内部查询以进行分页。我认为创建临时视图/表或使用内部查询将是比简单的查询慢。我相信有一个强烈的理由弃用它。我想知道原因。

如果有人知道,请分享。

3 个答案:

答案 0 :(得分:3)

我从来不知道SQL Server支持像TOP 10,20这样的东西 - 你真的完全确定吗?不是那个其他系统可能吗?

无论如何:SQL Server 2011(代号为“Denali”)将在2011年底左右推出时为其添加更多支持。

ORDER BY子句会获得新的其他关键字OFFSETFETCH - 详细了解here on MSDN

您将能够编写如下语句:

-- Specifying variables for OFFSET and FETCH values  
DECLARE @StartingRowNumber INT = 150, @FetchRows INT = 50;

SELECT 
    DepartmentID, Name, GroupName
FROM 
    HumanResources.Department
ORDER BY 
    DepartmentID ASC 
    OFFSET @StartingRowNumber ROWS 
    FETCH NEXT @FetchRows ROWS ONLY;

答案 1 :(得分:1)

SQL Server 2005 Paging – The Holy Grail(需要免费注册)。

(虽然它说SQL Server 2005它仍然适用于SQL Server 2008)

答案 2 :(得分:1)

我同意100%! MySQL有一个LIMIT子句,它可以很容易地返回一系列行语法。

我不确定临时表语法是否较慢,因为SQL Server可能能够进行一些优化。但是,LIMIT子句更容易输入。我希望也会有更多的优化机会。

之前我带过这个,而我正在谈论的小组似乎并不同意。

就我而言,没有理由没有LIMIT子句(或等效物),我强烈怀疑SQL Server最终会出现!