• ベストアンサー

取出す順番

selectで取出したときのデータのならびについてですが、 order byやgroup byをしなければ、 テーブルに書き込んだ順番が保障されるものでしょうか? MySQLのバージョンは 4.1.10です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「order by」の指定がない場合、検索順序は保証されません。 「primary key順」や「格納順」といったことも保証されません。 これは殆どのRDBMSでも、同じです。 SQL Serverだけは、primary keyがある場合、「order by」がなくても「primary key順」になるように制御しているようですが、これは特殊な例です。 「順序保証しないと言っているが、実は格納順になるのでは?」と実験した結果を公表しているユーザサイトがあり、「やはり必ずしも格納順にならない」という結論が示されていました。 また、格納や削除を繰り返せば、物理的な格納位置は不定になるので、「order by」が必要なことがすぐに理解できると思います。 MySQLのマニュアルで、将来の計画として、「『order by』指定がない場合、『order by 主キー』を内部的に追加する」という案もあるようです。

ritomo
質問者

お礼

早速で完璧な回答、ありがとうございます。 物理的な格納位置の件、よくわかりました。

関連するQ&A