を切り替え、私は私が最終的にあなたがで取得しようとしているのか理解だと思うが、あなたがデータベースが操作を注文実行方法については非常に混乱している表示されます。
私が正しく理解していれば、大量の行(例では1,000行ですが、多数の行ではありません)を並べ替えることによるパフォーマンスへの影響が懸念されます。したがって、あなたが興味を持っている100行をソートするだけで、それを圧倒しようとしています。
where句を100行に制限すると、ほとんどの場合、最新のDBシステムは自動的に余分な作業をしないように結果が絞り込まれるまでソートします。これは時間の100%ではありませんが、DBオプティマイザが最初にソートすることを決定した場合、パフォーマンスに基づいて非常に良い理由があるか、または問合せによって、ソートを最初に実行して正確な結果。
トリックは、tSQLが手続き型ではない宣言的な言語であることを理解しておかなければならないということです。つまり、言語を使用して必要なものを記述し、オプティマイザは、それを実現するための正確なアルゴリズムを見つけます。 C#やJavaのような手続き型言語を書くのと同じようにコードを最適化しようとしているようです。 SQLはクエリをコードに変換しますが、入力すると実行されません。
DBエンジンは、このタイプの単純な最適化(および非常に複雑なもの)が非常に優れています。このようなギミックでオプティマイザを最適化するつもりはないので、気にしないでください。パフォーマンスを向上させるつもりはなく、クエリの書き方によっては実際にパフォーマンスを低下させる可能性があります。
指定した順序で最初の1000行を選択し、その結果の最初の100行を*異なる*順序で返すクエリを要求していますか? –
どのDBMSを使用していますか? – RichardTheKiwi
@ Cyberkiwi私はMS Sqlを使用します。 @AdamRobinson。いいえ、私は1000行の順序を選択して100行を返したいと思います。 – Darqer