我有一個MySQL查詢到13秒執行是有什麼辦法可以減少執行時間在這裏是在查詢的每個原子部分解釋優化MySQL查詢
EXPLAIN
SELECT SQL_CALC_FOUND_ROWS st.store_id as st_id, `st`.`store_id`
FROM `store` AS `st`
LEFT JOIN `coupon` AS `cp` ON st.store_id = cp.store_id
LEFT JOIN `deal` AS `dl` ON st.store_id = dl.store_id
LEFT JOIN `store_category_relations` AS `scr` ON st.store_id = scr.store_id
GROUP BY `st`.`store_id`;
+----+-------------+-------+-------+-----------------------+-----------------------+---------+---------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+-----------------------+-----------------------+---------+---------------------+------+-------------+
| 1 | SIMPLE | st | index | NULL | PRIMARY | 4 | NULL | 1 | Using index |
| 1 | SIMPLE | cp | ref | store_id | store_id | 4 | sonicqa.st.store_id | 5 | Using index |
| 1 | SIMPLE | dl | ref | idx_deal_fid_store_id | idx_deal_fid_store_id | 4 | sonicqa.st.store_id | 287 | Using index |
| 1 | SIMPLE | scr | ref | store_id | store_id | 4 | sonicqa.st.store_id | 2 | Using index |
+----+-------------+-------+-------+-----------------------+-----------------------+---------+---------------------+------+-------------+
4 rows in set (0.00 sec)
store_id(s):它們是否在所有表格中編制索引? –
如果我正確地讀取了SQL,它只是從不同的第一個表中取回store_id,而剩下的其他表將與其他表無關。 – Kickstart
是的,他們被索引在所有表 –