2011-12-17 47 views
1

這個簡單的查詢:與詮釋指數MySQL的簡單的查詢速度慢

SELECT trip_id from stop_times WHERE stop_id = 345 

注意到80ms左右,這是考慮到我通過迭代10K〜行了太多的時間。我的stop_times表有大約3.5M行,並有stop_id索引。在這裏發生了什麼以及什麼可能會加快速度?

EXPLAIN [query]輸出:

id: 1 
select_type: SIMPLE 
possible_keys: index_stop_times_on_stop_id 
key: index_stop_times_on_stop_id 
key_len: 5 
ref: const 
rows: 474 
Extra: Using where 
+0

請問您可以運行'EXPLAIN SELECT stop_times where stop_id = 345'選擇trip_id併發布結果? – 2011-12-17 18:28:33

回答

3

嘗試增加trip_id到索引上stop_id。這樣你的查詢就會有一個覆蓋索引,並且不會查找。另外,請檢查執行計劃(EXPLAIN [your query])。如果索引不夠有選擇性,它將不會被使用。

+0

如何從這些解釋結果中知道索引是否正在使用? http://cl.ly/ChSQ – samvermette 2011-12-17 18:34:19

+0

如果使用它,你會看到'使用索引',並且'可能的鍵'('使用的鍵')列中的索引名稱(對不起,不記得'解釋中的確切列名稱'output) – a1ex07 2011-12-17 18:35:33

+0

那麼從它的外觀來看,我的'stop_id'索引沒有被使用?爲什麼不? – samvermette 2011-12-17 18:39:01