mysql:8459
From: "Kawaji, Shinya" <"Kawaji, Shinya" <kawaji@xxxxxxxxxx>>
Date: Tue, 09 Dec 2003 15:16:06 +0900
Subject: [mysql 08459] Re: MySQL はどのように LIMIT を最適化するか?について
かわじ、です。 > -------------------- > 5.2.8 MySQL はどのように LIMIT を最適化するか? > > ・もし LIMIT # を ORDER BY と共に使用するなら, MySQL は最初の # 行を見つけた > らすぐに、全テーブルのソートは行わずに、ソートを終わらせます。 > -------------------- ソースを読んでいないので、万が一外してたら申し訳ないんですが、 ここで言わんとしていることは MySQL では最適化のために、limit と order by がともに使用されていたら、 いちいち全部の行をソートしてから limit するのではなくて、 最初の limit 分だけ見つかるようにソートします という意味ではないでしょうか? つまり、id というカラムでソートするとして、100行あった場合、 limit 10 とすると、id が少ないものから順に 10行見つければ、 あとの 90行の id の順番なんて、どうでもいい(計算しなくていい)という ことだと思います。 単に order by id の場合 → id を全てソートする order by id limit 10 の場合 → id を少ないものから10行見つける (他の行はソートしない) なので、 > 最新の日付順に10件欲しいときはLIMITを使わずに、まずORDER BYして、その結果を > クライアント側で10件だけ使用するという方法になるんでしょうか? という必要はなくて、「order by の後で limit は評価される」という 認識で間違いないと思います。 私の認識が間違っていましたら、どなたかお知らせくだされば幸いです。
8458 2003-12-09 13:03 ["ta ma" <chihuahuaty] MySQL はどのように LIMIT を最適化するか?について -> 8459 2003-12-09 15:16 ┗["Kawaji, Shinya" <ka]