mysql:16252
From: 林正紀 <林正紀 <hayashi.masa.norii@xxxxxxxxxx>>
Date: Thu, 9 Jul 2015 15:08:41 +0900
Subject: [mysql 16252] ORDER BY句を指定しなかった場合のSELECT結果について
ORDER BY句を指定しなかった場合、SELECT文で取得するデータの並び順についての質問です。 一般的なSQLでは、ORDER BY句を指定しなかった場合、 その検索結果の並び順は保証されないものと認識しています。 MySQLにおいても、仕様上はそうであったと記憶しています。 (マニュアルの記述箇所がみつけられなかったのですが) こちらについて、「実装レベル」では実際どうなのか (本当に仕様通り不定なのか、実際には必ずなにがしかの順序で変えるのか)を知りたいのです。 具体的には、過去に実行したSQLが判明しており そのSQLで具体的にどのレコードが抽出されたかを特定したく その過去の時点のダンプデータもあるのですが 該当SQLがORDER BY句を含んでおらず、LIMITが指定されており (例えば SELECT * FROM some_table LIMIT 1 のようなSQLです) 過去流したSQLとそのダンプデータで実行した結果が そのSQLを流した当時のものと同じレコードがセレクトされるかが保証できるかを確認したいのです。 調査したいSQLも、実行計画が full scanになるようなクエリです。 また、その該当テーブルにはデータはINSERT/UPDATEはされますが、DELETEはされません。 UPDATEが走るので、カラムレベルでは完全に同じレコードが再現できない可能性はありますが 同じレコード(同じPKのレコード)が得られるかどうかが知りたいです。 MySQLのバージョンは、5.1系 ストレージエンジンはMyISAM / InnoDB それぞれについてです。 どなたかご存知のかたいましたら、ご教示いただけますでしょうか。 以上、よろしくお願いいたします。
-> 16252 2015-07-09 15:08 [林正紀 <hayashi.masa] ORDER BY句を指定しなかった場合のSELECT結果について 16253 2015-07-09 20:13 ┗["yoku ts." <yoku0825] Re: [mysql 16252] ORDER BY句を指定しなかった場合のSELECT結果について 16254 2015-07-09 20:49 ┗[林正紀 <hayashi.masa] Re: [mysql 16253] Re: [mysql 16252] ORDER BY句を指定しなかった場合のSELECT結果について 16255 2015-07-10 12:47 ┗["yoku ts." <yoku0825] Re: [mysql 16254] Re: [mysql 16253] Re: [mysql 16252] ORDER BY句を指定しなかった場合のSELECT結果について 16256 2015-07-10 20:04 ┗[林正紀 <hayashi.masa] Re: [mysql 16255] Re: [mysql 16254] Re: [mysql 16253] Re: [mysql 16252] ORDER BY句を指定しなかった場合のSELECT結果について