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

mysql:10706

From: mattun <mattun <mattun@xxxxxxxxxx>>
Date: Mon, 20 Dec 2004 18:27:17 +0900
Subject: [mysql 10706] Re: SELECTの速度が遅い

さっそくのお返事ありがとうございます、松丸です。

> explain select b.id, b.name from messages as a, users as b where
> a.target=b.id and b.sid=53 and a.isread='f' group by b.id order
> by b.id
>
> レコード件数にもよると思いますが、
> インデックスを使用せずにレコードを数万件なめる必要がある場合は
> 当然時間がかかると思いますので、インデックスを使用するようにクエ
> リーを書き換えればいいのではないかと思いますが…。外していたらご
> めんなさい。

上記をやってみたところ、
+-------+--------+-----------------------+---------+--------- 
+----------+--------+----------------------------------------------+
| table | type   | possible_keys         | key     | key_len | ref       
| rows   | Extra                                           |
+-------+--------+-----------------------+---------+--------- 
+----------+--------+----------------------------------------------+
| a     | ALL    | messages_target_index | NULL    |    NULL | NULL      
| 751457 | Using where; Using temporary; Using filesort |
| b     | eq_ref | PRIMARY               | PRIMARY |       4 | a.target  
|      1 | Using where                                  |
+-------+--------+-----------------------+---------+--------- 
+----------+--------+----------------------------------------------+

とでました。aのほうがインデックスを使ってない状態なのでしょうか?

あるサーバーから違うサーバーにデータを移動した場合などには、インデックスは作りなおしたほうが良いのでしょうか?

移行前のサーバーでは、

select b.id, b.name from messages as a, users as b where
a.target=b.id and b.sid=53 and a.isread='f' group by b.id order
by b.id

で、今よりははやく動いたようです。

>  phpMyAdminを使っているということは、PHPでMySQLにアクセスしているわけで
> すから、PHP側の問題でもMySQLの問題でもなく、松丸さんの書かれたプログラム
> の問題だと思います。
>
> #同じデータベースに同じSQLでリクエストしてるんですよね?

そうですね、同じデーターベースにリクエストしています。


> Where句のみでの結合を行わずに、Form句でJOINを利用してみては
> いかがでしょうか?
> DB2, Oracleでは、この方法で速度を上げることができました。


select users.id,users.name from messages INNER JOIN users on  
target=users.id where users.sid = 53 and messages.isread='f'

こんな感じでJOINしてみました。結果は、以前のクエリと同じになりましたが、時間はのびてしまい、約10秒かかってしまいました。

JOINの仕方が間違っているのでしょうか?

以上よろしくお願いいたします。

松丸頒泰
mattun@xxxxxxxxxx
http://www.meganebu.com


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

->   10706 2004-12-20 18:27 [mattun <mattun@xxxxx] Re: SELECTの速度が遅い                  
     10707 2004-12-20 19:36 ┣[al-kamil <al-kamil@x]                                       
     10709 2004-12-21 10:44 ┗[Hideki SUNADA <hidek]                                       
     10711 2004-12-21 15:10  ┗[mattun <mattun@xxxxx]