[前][次][番号順一覧][スレッド一覧]

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結果について