2010-12-11 23 views
0

私はSQLサーバーの初心者です。 thisを参考にして質問してください。私の疑問は
です。なぜMicrosoft SqlサーバーにはMysqlのような制限がありません。なぜなら、SPまたはページング用の内部クエリを書くことが強制されています。内側のクエリを使用すると、単純なクエリよりも遅くなります。そして、私はこれを非難する強い理由があると信じています。私はその理由を知りたい。SQLサーバー2008のページ番号

誰かが知っている場合は、それを共有してください。

+2

はあなたのような文を書くことができるようになります。あなたはこれを見た場所と、あなたが見た場所が非難されたと言うことができますか? –

+0

訂正ありがとうございます。私は私がSQLサーバの初心者だと言ったので、構文は私の同僚の一人によって与えられました。そして、私は十分にグーグルでそれを掲示しました。それで、私は質問を「なぜMicrosoft SQLサーバになぜ「Microsoftはトップ10,20の構文を廃止しましたか」から「Mysqlの制限」を削除しました。今質問がうまくいけるといいですね。 – RSK

答えて

3

TOP 10,20のようなものをサポートしているSQL Serverはまったく分かりませんでした。本当に完全ですか?それは他のシステムかもしれないでしょうか?

とにかく:SQL Server 2011(コード名「Denali」)は、2011年末までにこれ以上のサポートを追加する予定です。

ORDER BY句は、新しい追加のキーワードOFFSETFETCHを取得します - それらhere on MSDNについての詳細を読みます。これは長い間私を気にしていますが、私も承知TOPがこれまでに開始行を設定するために使用することができませんでした、

-- 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

最も優れたニュースです!すべての結果を望んでいないので、あまりに複雑なクエリを書くのは本当にうんざりです。 (BTW、私はSQLのエキスパートではありませんが、TOP 10,20の構文についても驚きました。) –

1

SQL Server 2005 Paging – The Holy Grail(無料登録が必要です)。

(これはSQL Server 2005の言うものの、それはまだSQL Server 2008に適用されます)

+0

あなたは記事が言ったことについてのヒントを提供した場合、いいかもしれません。誰もが自分の電子メールアドレスとさらに別のパスワードで記事を読むすべてのサイトを提供したいとは思っていません。 –

1

私は100%同意します! MySQLには、一連の行を返すための非常に簡単な構文を作成するLIMIT節があります。

SQL Serverがいくつかの最適化を行うことができるため、一時的なテーブル構文が遅いことがわかりません。ただし、LIMIT句を入力する方がはるかに簡単です。そして私は、最適化の機会が増えると予想しています。

私はこれを以前に持ち込みました。私が話していたグループはちょうど同意していないようです。

LIMIT句(または同等のもの)を持たない理由はありません。私は、SQL Serverが最終的にそうなると強く思っています!