1

SQL Server2008R2を使用しています。PD(6列)というテーブルがあり、主キーがなく、どの列にもインデックスがありません。クエリを実行すると

select * from PD where ESE='bycad'

ORDER BY句がないと、同じクエリを実行するたびに異なる順序で結果が得られます。2か月前までSQLServer2000を使用していましたが、この問題に直面することはありませんでした。

これはSQLServer2008のバグですか?ORDER BY句を使用する必要があることはわかっていますが、SQL Server2008がORDERBY句のないSQLクエリを異なる方法で処理するのはなぜですか?

4

1 に答える 1

9

SQLServerからの結果セットはすべてセットです。セットには固有の順序はありません。

「ORDERBY」が指定されていない限り、selectステートメントから返される行の順序は保証されていません。(これは、SQL Serverだけでなくすべてのrdbmsに当てはまります)

編集:あなたの質問に答えるために、実行ごとに異なる順序が表示される理由は、テーブルの並列スキャンによって「引き起こされた」可能性が最も高いです。新しいハードウェアも入手しましたか?ただし、順序付けされた結果が必要な場合は、「ORDERBY」を指定する必要があります。

于 2012-12-21T09:19:39.330 に答える