2010-12-11 82 views
0

我是SQL服务器的新手。保持this问题作为reference.My无疑是
为什么微软SQL Server不具有类似限制在MySQL,现在他们正在迫使写无论是SP还是pagination.I内查询想创建一个临时视图/表或使用内部查询将比简单的查询慢。而且我相信会有一个强烈的理由贬低这个。我想知道原因。SQL Server 2008中的分页

如果有人知道它,请分享它。

+2

虽然这已经困扰了我很长时间,我连能否被用来了解TOP设置起始行。你能说你在哪里看到这个,你看到哪里被弃用? – 2010-12-11 08:08:35

+0

谢谢你的纠正。正如我告诉我,我是一个SQL服务器的新手,语法是由我的同事给出的。我发布了足够多的googling.sorry。因此,我将问题更改为“为什么Microsoft Sql服务器没有类似的东西限制在Mysql中“为什么”微软不赞成使用前10,20个语法“。希望现在问题没有问题。 – RSK 2010-12-11 10:05:06

回答

3

我从来不知道SQL Server支持类似TOP 10,20 - 你真的完全确定?那不是其他一些系统吗?

总之:SQL服务器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; 
+0

最好的消息!我真的厌倦了写太复杂的查询,因为我不想要所有的结果。 (顺便说一句,我不是SQL专家,但我也很惊讶地看到提到的TOP 10,20语法。) – 2010-12-11 15:47:38

1

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

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

+0

如果你提供了关于文章内容的线索,可能会很好。不是每个人都想给他们的每一个网站阅读他们的电子邮件地址和另一个密码的文章。 – 2010-12-11 15:45:51

1

我同意100%! MySQL有LIMIT子句,它使得返回一系列行的语法非常简单。

我不确定临时表语法比较慢,因为SQL Server可能能够进行一些优化。但是,LIMIT子句将更容易输入。而且我预计还会有更多的优化机会。

我以前带过这个,和我谈话的那个小组似乎不同意。

就我而言,没有理由不拥有LIMIT子句(或同等学历),我强烈怀疑SQL服务器最终会!