2

SQL Server 2008 R2を使用していて、id列が。のテーブルがありますidentity(1,1)。id列で並べ替えられたクエリを取得する場合は、使用する必要がOrder By IDあるか、不要である必要があります。

編集: ID列に一意のクラスター化インデックスがあります。このインデックスは、私のクエリがデフォルトでidでソートされることを保証しますか。

4

3 に答える 3

2

デフォルトのソート順はありません。テーブルにクラスター化インデックスがある場合でも、その順序で結果が得られるとは限りません。

句を希望のソート順で指定する必要がありますORDER BY

于 2012-10-27T15:19:52.407 に答える
2

ORDER BY が省略された場合 - 順序は予測できません。このような SQL ステートメントは明示的な順序を要求しないため、SQL Server は準備が整ったときに結果を返すことができます。

つまり、次のことを意味します。

  • 順序が実行計画に完全に依存していること。

  • 一部のフィルター条件で返される順序は、他の場合には異なる可能性があります

  • クラスター化インデックスは、一部のシナリオでは、一部の実行プランでは使用されない場合もあります。そして、そのような場合 (使用されていない場合) - その順序は考慮されません。

一部の選択では、他のカバー インデックスを使用できます (これは ID 順ではありません)。そして、それは「予期しない」順序になります。

Ordered listを取得する必要がある場合は、明示的な ORDER BY 句を使用する必要があります。その後、順序について確認できます。その時だけ。

于 2012-10-27T15:25:21.357 に答える
1

「ORDER BY」を使用しない場合、テーブルの順序は保証されません。

于 2012-10-27T15:26:50.200 に答える