2012-12-05 69 views
0

MySQL查詢(版本61年1月5日)MySQL查詢 - 爲什麼在這種情況下不使用索引?

SELECT alerts.*, 
     devices.user_id 
    FROM alerts 
     left JOIN devices 
      ON alerts.device_id = devices.id 
WHERE devices.name = 'myval' 

上有「alerts.device_id」 在MySQL解釋不使用索引的索引,它顯示輸入「ALL」和行爲的完整計數表中的行。

我不明白爲什麼它不使用此索引。 我錯過了什麼?

謝謝!

+2

請發佈EXPLAIN的輸出。 –

+0

對不起,我簡化了實際查詢並錯過了一些問題點!當我再次找到時會更新這個。 – iss42

回答

1

索引沒有被選中,因爲你沒有使用它,既不在select中,也不在where子句中。

你需要的,如果是大於0,就像device.name

添加索引你可以做一兩件事,迫使發動機要考慮指標,如果它是一個主鍵,它的值:

SELECT alerts.*, 
     devices.user_id 
    FROM alerts 
     left JOIN devices 
      ON alerts.device_id = devices.id 
WHERE devices.name = 'myval' and alerts.deviceid>0 
相關問題