1人のプログラマが、同じデータベース構造と同じデータを使用する同じアプリケーションを、Oracle 8とOracle 9の2つの異なるデータベースでのみテストおよび比較しています。
アプリは句なしで クエリを実行しますORDER BY
。
彼は、ORDER-BY-lessクエリは両方のデータベースで同じ順序で行を返すべきだと主張しています。
ORDER BY句を明示的に指定しない限り、同じ行順序の保証はないことを彼に伝えます。
データベースには同じインデックスとキーがあります。しかし、説明プランでは、データベースの1つではエンジンが結合テーブルの1つのキーを使用しているのに対し、他のデータベースでは別のデータベースのキーを使用していることを示しています。
彼は、2つのDB環境が等しくないことをほのめかしています。これは、統計やRDBMSエンジンなどが異なるためです。元のデータベースのすべてのインデックスを複製できなかったためではありません。
ORDER BY
順序が本当に重要な場合は、明示的に条項を提供する必要があると彼に言います。
質問
だから私は彼をよりよく説明できます:
ORDER BY句を明示的に指定しない場合、クエリはどの順序で行をフェッチしますか?また、なぜそのクエリは同じ順序で行を返さないのですか?