• ベストアンサー

EXPLAINのUsing filesortについて

explain select * from address where area =1 order by id desc limit 10,1\G 上記クエリーをexplainで確認すると Extra: Using where; Using filesort が表示されてしまいます。 1. Using filesortを消したいのですが、idを降順で表示するのに order by id desc 以外の方法はありますか?このような場合、Using filesortは仕方ないのでしょうか? 2. Using whereは効率の悪いクエリーの要素になるのでしょうか?

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

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

まず、バージョンを明記しましょう。 母体データ件数はどのくらいあり、その内、何件を検索しようとしているのですか? (area,id)という複合キーでインデクスを定義すれば、作業ファイルによるソートを抑止できるかも知れません。 ここで注意点なのですが、MySQは昇順と降順を混在させた複合キーのインデクスを未実装です。 例えば、次のような昇順と降順が混在した指定で、インデクスを実装できません。 (area,id desc) (area desc,id asc) しかし、MySQLは上記のようなインデクス定義は、未実装であるというエラーにはせず、内部的に昇順に勝手に変更してインデクスを作成してしまいます。

ospsp
質問者

お礼

どうもありがとうございました。 参考になりました。

関連するQ&A