我有時間太長執行即使在小表的基本查詢(< 100,000行):加快與加盟,其中,組通過查詢,統計
select images.classification, count(boxes.id)
from images
join boxes on images.id = boxes.image_id
where boxes.round = 0
group by images.classification;
我有箱子指數.round,boxes.image_id和images.classification(在此查詢中只有varchar)。在boxes.id和images.id上的主鍵。解釋表明它正在利用boxes.round索引。額外的是:Using where; Using temporary; Using filesort
。
是否有可能加快此查詢?怎麼樣?
重要的是,服務器是MySQL 5.1的所有MyISAM表。
(這個問題是類似於How to speed up "select count(*)" with "group by" and "where"?)
完全解釋輸出:
mysql> explain select images.classification, count(boxes.id) from images join boxes on images.id = boxes.image_id where boxes.round = 0 group by images.classification;
| 1 | SIMPLE | boxes | ref | ix_boxes_image_id,ix_boxes_round | ix_boxes_round | 5 | const | 64162 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | images | eq_ref | PRIMARY | PRIMARY | 4 | vatic.boxes.image_id | 1 | |
你可以發佈'EXPLAIN'的輸出嗎? – Piskvor 2010-08-20 18:50:38
@Piskvor,補充說。 – carl 2010-08-20 18:54:27
謝謝,這是一個相當重要的數據。 – Piskvor 2010-08-20 19:56:01