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

mysql:8458

From: "ta ma" <"ta ma" <chihuahuatyan2@xxxxxxxxxx>>
Date: Tue, 09 Dec 2003 13:03:25 +0900
Subject: [mysql 08458] MySQL はどのように LIMIT を最適化するか?について

MySQL Reference Manual を読んで、ご質問したいことがあります。

--------------------
5.2.8 MySQL はどのように LIMIT を最適化するか?

・もし LIMIT # を ORDER BY と共に使用するなら, MySQL は最初の # 行を見つけた
らすぐに、全テーブルのソートは行わずに、ソートを終わらせます。 
--------------------

ということは
最新のものを10件だけ表示したいとき
SQL:
SELECT * from TABLE1 order by DATE1 desc limit 0,10

このときまず10件みつけてからその10件の中で日付順にソートするのでしょうか?
それともテーブルに入っている全データの中で新しい日付のものを10件返してくるの
でしょうか?

今まで都合よく後者のつもりでいましが、マニュアルの「最初の # 行を見つけたら
すぐに、全テーブルのソートは行わずに、ソートを終わらせます。 」ということは
前者のほうのような気がします

ORACLEではLIMITがなく、

SELECT * from TABLE1 where ROWNUM <10 order by DATE1 desc;

全データを並び替えてから結果の行番号が10行目までだけ返す

というようにしますね

MYSQLでは
LIMITとORDER BYの順番なんですが、一緒に使うとまずLIMITでその結果をORDER BY
するんでしょうか?

最新の日付順に10件欲しいときはLIMITを使わずに、まずORDER BYして、その結果を
クライアント側で10件だけ使用するという方法になるんでしょうか?



Regards
--CHIWAKO

_________________________________________________________________
友達と24時間ホットライン「MSN メッセンジャー」、今すぐダウンロード!  
http://messenger.msn.co.jp 


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

->    8458 2003-12-09 13:03 ["ta ma" <chihuahuaty] MySQL はどのように LIMIT  を最適化するか?について
      8459 2003-12-09 15:16 ┗["Kawaji, Shinya" <ka]