我有一个简单的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
首先,left join
s对于您的查询是不必要的。该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);
这些应该有助于查询。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句