LEFT JOIN的结果慢

史提芬

我有一个简单的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
戈登·利诺夫(Gordon Linoff)

首先,left joins对于您的查询是不必要的。where子句将它们转换为inner joins。

其次,最后的联接是不必要的,因为您可以从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);

这些应该有助于查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章