質問: MySQL で ORDER BY を指定しない時、SELECT結果並び順 の法則性に関するドキュメントは公開されているでしょうか? ・必要なら、ORDER BY を 指定した方がよいとは思うのですが、**指定しない場合は、どういう基準で、並び順を決定**しているのでしょうか? ・インデックスは関係する? ・バージョンによって異なる? ・それに関する資料はどこかにない? --- 質問背景を追記しました。 ・単なる興味本位です ・ORDER BY を 指定しない場合、MySQL はどういう思考に基づいて処理を行うのか、そこには一定の法則があると思うのですが、そこを開示していないのかな、と思いました (オープンソースだけど、処理内容を読み解くことは実質的に不可能?) ・また、標準SQLで、「ORDER BY を指定しない」場合の取り扱いについて具体的にどう言及しているか、について知りたかったです
回答: ORDER BY を指定しない場合の並び順には**何の保証もありません**。 RDBMS がやりやすいように抽出した結果をそのまま返すわけですから、ストレージエンジンと実行計画による影響が大きいように思います。当然バージョンやインデックスによっても変化します。極論を言えば、パフォーマンスを追求した結果、キャッシュの状態で結果が変化する実装になるかもしれません。 「何らかの基準で並び順が決定」されることを望むなら ORDER BY を使ってください。 前述のように、「デフォルトの並び順」は利用者からすれば気にしてはならないものですし、開発者からしても気にする必要のない物ですから、まとまった資料は開発者向けとしても存在しない気がします。