MySQLのSELECT句で * と id で異なるidのレコードが取得出来る場合の対応

以下2つのSQLで取得出来るレコードのidが異なった。

SELECT * FROM table WHERE hoge = fuga LIMIT 1;

SELECT id FROM table WHERE hoge = fuga LIMIT 1;

ほしいデータとして正しいのは上のクエリ、しかし実行したいのはしたのクエリである。
原因はMySQLのLIMITクエリ最適化らしく、LIMITの指定が少ない場合、インデックスが使用されることがあるらしい。

詳しくは以下
8.2.1.19 LIMIT クエリーの最適化

どうすればいいかというと、ORDER BY句でちゃんと並び替えればいい。

SELECT id FROM table WHERE hoge = fuga ORDER BY id LIMIT 1;

idはPKなのでORDER BY指定しなくてもid昇順で取ってくると思ってたけどそうでもないだな…