MySQL查询(版本5.1.61)
SELECT alerts.*,
devices.user_id
FROM alerts
left JOIN devices
ON alerts.device_id = devices.id
WHERE devices.name = 'myval'
“alerts.device_id”上有一个索引 Explain中的MySQL不使用索引,它显示类型“ALL”,行是表中行的完整计数。
我无法理解为什么它不使用这个索引。 我错过了什么?
谢谢!
答案 0 :(得分:1)
索引没有被选中,因为你没有在select和else子句中使用它。
您需要在device.name
你可以做一件事来强制引擎考虑索引,如果它是一个主键,它的值if大于0,如:
SELECT alerts.*,
devices.user_id
FROM alerts
left JOIN devices
ON alerts.device_id = devices.id
WHERE devices.name = 'myval' and alerts.deviceid>0