ホームページ >データベース >mysql チュートリアル >SQL Server 2008 と SQL Server 2012 の SELECT クエリでは行の順序がどのように異なりますか?
SQL Server 2008 と 2012: SELECT クエリの行順序の不一致
問題:
SQL Server 2008 から SQL Server 2012 にアップグレードすると、SELECT
句のない ORDER BY
クエリのデフォルトの行順序という重大な違いが明らかになりました。 SQL Server 2008 では、一見一貫した順序で行が返されることがよくありましたが、SQL Server 2012 ではそのような保証はありません。
影響:
この変更は、この暗黙的な順序付けに依存するアプリケーションに大きな影響を与え、特に 5 つのデータベースにわたる 2500 以上のストアド プロシージャに影響を与えます。 ORDER BY
句を一括して追加することは現実的ではありません。 開発者は効率的なソリューションを求めており、SQL Server 2008 へのダウングレードも検討しています。
明示的な順序付けが重要な理由:
ダウングレードはお勧めしません。 デフォルトの行順序に対する期待は根本的に間違っています。 SQL はセットを操作しますが、セットには本質的に固有の順序がありません。 Itzik Ben-Gan が「Microsoft SQL Server 2012 T-SQL Fundamentals」で強調しているように、明示的に並べ替えない限り、クエリ結果は順序付けされていません。
暗黙の順序の予測不可能性:
開発者は常に明示的な ORDER BY
句を使用する必要があります。 クエリ オプティマイザーはパフォーマンスのために操作を再配置し、認識されているデフォルトの順序を変更する可能性があります。
一貫した行順序のベスト プラクティス:
予測可能な結果を保証するには:
ORDER BY
を含めます。SELECT
ORDER BY
以上がSQL Server 2008 と SQL Server 2012 の SELECT クエリでは行の順序がどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。