LEFT JOIN结果缓慢

时间:2014-05-18 21:26:18

标签: mysql

我有一个简单的SQL查询,如果我限制超过10,结果的时间超过15秒。我的问题是,为什么它很慢?这是我的要求:

SELECT E.ID_Pays
FROM tbl_Usager A
LEFT JOIN tbl_Ville B ON A.ID_Ville = B.ID_Ville
LEFT JOIN tbl_Departement C ON B.ID_Departement = C.ID_Departement
LEFT JOIN tbl_Pays E ON C.ID_Pays = E.ID_Pays 
WHERE E.ID_Pays='1'
LIMIT 8

2 个答案:

答案 0 :(得分:0)

我的建议是优化所有表中的索引管理,通常是问题所在。

这是一个可以帮助您的链接:http://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html

答案 1 :(得分:0)

首先,查询不需要left joinwhere子句将它们转换为inner join s。

其次,最后的连接是不必要的,因为你可以从departement表中获取值。

SELECT d.ID_Pays
FROM tbl_Usager u JOIN
     tbl_Ville v
     ON u.ID_Ville = v.ID_Ville JOIN
     tbl_Departement d
     ON v.ID_Departement = d.ID_Departement
WHERE d.ID_Pays = '1'
LIMIT 8;

那会有所帮助。接下来,我假设所有ID_*变量都是各自表中的主键。最后,在id_pays上创建一个索引:

create index idx_department_2 on tbl_department(id_pays, id_departement);

这些应该有助于查询。