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

mysql:9358

From: "KATAYOSE hakuo" <"KATAYOSE hakuo" <katayose@xxxxxxxxxx>>
Date: Fri, 14 May 2004 01:32:42 +0900
Subject: [mysql 09358] Re: distinct でデータ欠落

片寄です。

> > 次のような select 文を書くと distinct の有無で question_no の答え 1 が欠
> > 落してしまいます。何か間違えているでしょうか?
> >
> > mysql> select  question_no from answer order by create_date desc limit
10;
>
> distinctでどのレコードが選ばれているかが問題な気がします。
> limit 10を外すとどうですか。もしくはorder by question_noで試してみるとか。
>  create_date をselectしてみるとか。etc.

マニュアルの「5.2.9 MySQL による LIMIT の最適化」を見ると

------------------------------------MySQL日本語マニュアル抜粋start
5.2.9 MySQL による LIMIT の最適化

HAVING を使用するのではなく LIMIT row_count を使用している場合、MySQL に
よるクエリの処理方法が異なる場合があります。

・LIMIT を使用して数レコードしか選択していないと、フルテーブルスキャンが
 行われそうな場合に、MySQL はインデックスを使うことがある。
・ORDER BY とともに LIMIT row_count を使用している場合、MySQL ではすべて
 のテーブルがソートされるのではなく、最初の row_count レコードの検索が
 行われた時点でただちにソートを終了する。
・LIMIT row_count を DISTINCT とあわせて使用した場合、MySQL は一意の
 row_count 行のレコードを検索するとただちに停止する。

------------------------------------MySQL日本語マニュアル抜粋end

「ORDER BY」と「LIMIT」を同時に使うと、全てのデータをソートしないと
書かれています。
また「LIMIT」と「DISTINCT」を使用した場合も全てのデータを検索しないと記載さ
れ
ています。
DISTINCTと「LIMIT」、あるいは「ORDER BY」と「LIMIT」を共に使う場合は
MySQLは勝手に最適化してしまうようです。


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

      9354 2004-05-13 23:53 [Koichi Shimamura <ma] distinct でデータ欠落                   
      9355 2004-05-14 00:11 ┗[seiji takegata <take]                                       
->    9358 2004-05-14 01:32  ┣["KATAYOSE hakuo" <ka]                                     
      9359 2004-05-14 02:22  ┃┗[seiji takegata <take]                                   
      9360 2004-05-14 02:50  ┗[seiji takegata <take]                                     
      9364 2004-05-14 09:54   ┗[Koichi Shimamura <MA] Re: distinct でデータ             
      9365 2004-05-14 10:43    ┗[Koichi Shimamura <MA] Re: distinct でデータ欠落       
      9366 2004-05-14 10:57     ┣[seiji takegata <take]                               
      9368 2004-05-14 11:29     ┗["HIROSE, Masaaki" <h]                               
      9371 2004-05-14 20:20      ┗[Koichi Shimamura <ma]