我是SQL服务器的新手。保留this个问题作为参考。我怀疑是什么 为什么Microsoft Sql服务器没有像Mysql中的限制,现在他们正在强制编写SP或内部查询以进行分页。我认为创建临时视图/表或使用内部查询将是比简单的查询慢。我相信有一个强烈的理由弃用它。我想知道原因。
如果有人知道,请分享。
答案 0 :(得分:3)
我从来不知道SQL Server支持像TOP 10,20
这样的东西 - 你真的完全确定吗?不是那个其他系统可能吗?
无论如何:SQL Server 2011(代号为“Denali”)将在2011年底左右推出时为其添加更多支持。
ORDER BY
子句会获得新的其他关键字OFFSET
和FETCH
- 详细了解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最终会出现!