2012-02-21 30 views
1

私が照会しているすべてのフィールドがインデックスされているにもかかわらず、実行に時間がかかりすぎるクエリ(4秒)があります。以下は、クエリと説明の結果です。問題は何ですか?クエリmysqlクエリの実行に時間がかかります

EXPLAIN SELECT count(hd.did) as NumPo, `hd`.`sid`, `src`.`Name` 
FROM (`hd`) 
JOIN `result` ON `result`.`did` = `hd`.`did` 
JOIN `sf` ON `sf`.`fid` = `hd`.`fid` 
JOIN `src` ON `src`.`sid` = `hd`.`sid` 
WHERE `sf`.`tid` = 2 
AND `result`.`set` = 'xxxxxxx' 
GROUP BY `hd`.`sid` 
ORDER BY `NumPo` DESC 
LIMIT 10; 

+----+-------------+--------------+--------+-------------------------+---------+---------+--------------------------+------+----------------------------------------------+ 
| id | select_type | table  | type | possible_keys   | key  | key_len | ref      | rows | Extra          | 
+----+-------------+--------------+--------+-------------------------+---------+---------+--------------------------+------+----------------------------------------------+ 
| 1 | SIMPLE  | sf   | ref | PRIMARY,type   | type | 2  | const     | 4 | Using index; Using temporary; Using filesort | 
| 1 | SIMPLE  | hd   | ref | PRIMARY,sid,fid   | FeedID | 4  | f2.sf.fid    | 3 |            | 
| 1 | SIMPLE  | result  | ALL | resultset    | NULL | NULL | NULL      | 5322 | Using where; Using join buffer    | 
| 1 | SIMPLE  | src   | eq_ref | PRIMARY     | PRIMARY | 4  | f2.hd.sid    | 1 |            | 
+----+-------------+--------------+--------+-------------------------+---------+---------+--------------------------+------+----------------------------------------------+ 
それは私が困っこのクエリを行うことになっているものを推測を抱えている。最大のテーブルにインデックスを使用していないように見えます
+0

ちょうど 'JOIN'はありますか? –

+1

@BrendanLong INNERがそれだった – applechief

答えて

3
| 1 | SIMPLE  | result  | ALL | resultset    | NULL | NULL | NULL      | 5322 | Using where; Using join buffer    | 

を実行するとき(mysqlのCPU使用率が100%にアップ撮影、あなたはresult.setにインデックスを持っているので、私はresult.didに1を追加してみてください、それが助けかどうかを確認したいようですが、それが見えます。

+0

のJOINんどのような種類の参加します。おかげさまで400ミリ秒かかる – applechief

関連する問題