下面的查詢: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