2013-02-23 154 views
0

我有我在哪裏存儲我的數據庫的音樂,音樂是不同的語言,所以我排序與列song_language。表結構的歌曲是這樣mysql的explain輸出不正確

 id   title    song_language 
非常簡單的表結構

我有100萬首不同的語言大約歌曲,但是當我試圖篩選出它掃描特定語言的所有歌曲。如果我說song_language =「工程」,它會掃描所有歌曲500000然而,我想只有3首歌曲和我的專欄song_language是很好的索引。這裏是我的查詢

 SELECT * FROM tableA WHERE song_language='Eng' limit 6 

需要0.0009秒來執行,所以我很高興,但解釋說,一些訂單後

 id select_type  table type possible_keys key  key_len  ref  rows Extra 
     1 SIMPLE tableA ref  song_language song_language 167  const 462591 Using where 

輸出相差

 id select_type  table type possible_keys key  key_len  ref  rows Extra 
     1 SIMPLE tableA ref  song_language primary  4 null 11 Using where 

,所以我認爲這是不使用索引,當我執行這個查詢需要對我的公關0.0035秒爲了不被只用了0.0009秒

任何人都可以給一些光在這個陌生的解釋輸出evious查詢?

+0

@FathahRehmanP是的,我知道爲什麼üHV疑問 – wayenjoy 2013-02-23 04:58:46

回答

1

你可能想,如果你使用的是限制在該查詢添加ORDER BY。如果是在非索引列排序它可以解釋意想不到的查詢計劃。

+0

請注意,爲了以後通過索引是沒有用的,因爲它不會使用索引如果u通過 – wayenjoy 2013-02-23 04:59:47

+0

使用極限,爲了增加無訂單通過同樣無用。另外,你是不正確的。索引絕對是按種類使用的。 – JohnFx 2013-02-23 05:00:40

+0

當我通過ID添加命令解釋是告訴它只檢查了11行,但鍵正在改變爲主,所以我認爲在這種情況下,它不使用索引看我更新的問題解釋輸出 – wayenjoy 2013-02-23 05:03:46