2010-12-11 81 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服務器最終會!