比方說,我們有一個共同的加入類似下面:如何通過查詢
EXPLAIN SELECT *
FROM visited_links vl
JOIN device_tracker dt ON (dt.Client_id = vl.Client_id
AND dt.Device_id = vl.Device_id)
GROUP BY dt.id
如果我們執行一個解釋,它說:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE vl index NULL vl_id 273 NULL 1977 Using index; Using temporary; Using filesort
1 SIMPLE dt ref Device_id,Device_id_2 Device_id 257 datumprotect.vl.device_id 4 Using where
我知道有時在使用group by時有時很難選擇正確的索引,但是,我可以設置哪些索引以避免在此查詢中使用「temporary,using filesort」?爲什麼發生這種情況?特別是爲什麼在使用索引後會發生這種情況?