- ベストアンサー
取出す順番
selectで取出したときのデータのならびについてですが、 order byやgroup byをしなければ、 テーブルに書き込んだ順番が保障されるものでしょうか? MySQLのバージョンは 4.1.10です。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「order by」の指定がない場合、検索順序は保証されません。 「primary key順」や「格納順」といったことも保証されません。 これは殆どのRDBMSでも、同じです。 SQL Serverだけは、primary keyがある場合、「order by」がなくても「primary key順」になるように制御しているようですが、これは特殊な例です。 「順序保証しないと言っているが、実は格納順になるのでは?」と実験した結果を公表しているユーザサイトがあり、「やはり必ずしも格納順にならない」という結論が示されていました。 また、格納や削除を繰り返せば、物理的な格納位置は不定になるので、「order by」が必要なことがすぐに理解できると思います。 MySQLのマニュアルで、将来の計画として、「『order by』指定がない場合、『order by 主キー』を内部的に追加する」という案もあるようです。
お礼
早速で完璧な回答、ありがとうございます。 物理的な格納位置の件、よくわかりました。