繁体   English   中英

如何优化运行速度太慢的查询(LEFT JOIN)

[英]How to optimize a query that's running too slow (LEFT JOIN)

我的查询运行太慢.....
有什么方法可以加快速度吗?

SELECT SQL_CALC_FOUND_ROWS a.*, b.*, c.*, d.*, e.*, f1.*, st6.* 
FROM tbl_a a 
LEFT JOIN tbl_b b ON a.m_id = b.m_id 
LEFT JOIN tbl_c c ON a.ms_id = c.ms_id 
LEFT JOIN tbl_d d ON a.gd_id = d.gd_id 
LEFT JOIN tbl_e e ON a.sd_id = e.sd_id 
LEFT JOIN tbl_f f1 ON a.tp_id = f1.tp_id 
LEFT JOIN 
        (
            SELECT g.*, GROUP_CONCAT(f2.tp_name SEPARATOR ',') tp_name, f2.tp AS tp
            FROM tbl_g g
            LEFT JOIN tbl_f f2 ON g.tp_id = f2.tp_id 
            GROUP BY s_id 
        )st6 ON st6.s_id = a.s_id

除非有特殊原因,否则请勿使用LEFT 我在这里看不到任何暗示。

像这样的查询优化最好,如果能首先执行子查询。 但是,“ LEFT”暗示它不可能。 删除所有的LEFT,看看它是否足够快给出“正确”的答案。

检查以下两个指示表中gd_id上是否存在PRIMARY KEYINDEX (对于其他JOIN也是如此。)

JOIN tbl_d d ON a.gd_id = d.gd_id

如果仍然需要帮助,请为每个表提供SHOW CREATE TABLE 和解释EXPLAIN SELECT ...;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM