下面的查询:MySQL查询不使用索引
EXPLAIN
SELECT
fdb . * ,
TIME_FORMAT(fdb.scheme, '%H:%i') AS scheme,
TIME_FORMAT(fdb.actual, '%H:%i') AS actual,
TIME_FORMAT(fdb.baggage, '%H:%i') AS baggage,
TIME_FORMAT(fdb.baggage_handled, '%H:%i') AS baggage_handled,
ff . * , TIME_FORMAT(ff.actual_saved, '%H:%i') AS actual_saved,
TIME_FORMAT(ff.baggage_saved, '%H:%i') AS baggage_saved,
TIME_FORMAT(ff.baggage_handled_saved, '%H:%i') AS baggage_handled_saved,
ap.device_id,
ap.device_token,
ap.device_language,
ap.app_edition,
ap.receive_status_notifications,
ap.receive_time_notifications,
ap.receive_luggage_notifications,
ap.receive_gate_notifications,
ap.receive_runway_notifications,
ap.receive_plane_notifications
FROM flights_database fdb
JOIN flights_followed ff ON fdb.flight_id = ff.flight_id
JOIN apns_users ap ON ff.device_id = ap.device_id
AND ap.app_edition = '1'
使用说明后,很明显的查询使用表扫描:
有各种按键和pusher_idx
同时包含device_id
和flight_id
。为什么这个索引不被使用?
我认为索引只能用作索引,当你只引用索引字段。如果您从同一个表中加入非索引字段,则会进行扫描。也期望函数调用将索引分解为扫描。 – Pieter21 2014-09-25 22:03:50
'SHOW CREATE TABLE \'apns_users \';','SHOW CREATE TABLE \\ flights_followed \';' – Sebas 2014-09-25 22:22:46