- 下記のクエリのように、SELECT文の WHERE IN句に、外側クエリのFROM句と同じテーブル(city)を指定した場合に、外側クエリに特定カラムでソートをすると、なぜか内側クエリにソートが発生してしまいます。(Using filesort)
外側クエリにしかソートを指定していないのに、内側にUsing filesortがかかっているのはなぜでしょうか?
※そもそも、下記の例だとIN句でサブクエリにする必要はないのですが、検証として理由が気になっています。
再現方法は、以下です。MySQL公式のサンプルデータ world を利用しています。
https://dev.mysql.com/doc/index-other.html
sql
1SELECT 2 c1.id 3FROM 4 city c1 5WHERE c1.id IN ( 6 SELECT 7 `c2`.`id` 8 FROM 9 `city` c2 10 WHERE 11 `c2`.`CountryCode` = 'ABW' 12) 13ORDER BY 14 c1.ID DESC 15LIMIT 5 16

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/05/01 03:36 編集
2019/05/01 03:59 編集
2019/05/01 04:04
2019/05/01 04:26 編集
退会済みユーザー
2019/05/04 05:19