我有一个简单的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
答案 0 :(得分:0)
我的建议是优化所有表中的索引管理,通常是问题所在。
这是一个可以帮助您的链接:http://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html
答案 1 :(得分:0)
首先,查询不需要left join
。 where
子句将它们转换为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);
这些应该有助于查询。