优化MySQL查询

时间:2012-12-21 12:25:15

标签: mysql sql

我有一个mysql查询需要13秒才能执行有没有办法减少执行时间这里是解释

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)

1 个答案:

答案 0 :(得分:0)

查询的每个原子部分都有

Using index ...没有临时文件,没有遍历所有行......

您可能已经拥有最快的解决方案。

但有一个问题:您使用的是InnoDB还是其他数据库引擎?