Mysql 左连接的结果很慢

Mysql 左连接的结果很慢,mysql,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_Pa

我有一个简单的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

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


这里有一个链接可以帮助您:

首先,您的查询不需要
左连接。
where
子句将它们转换为
internaljoin
s

其次,最终联接是不必要的,因为您可以从
department
表中获取值

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\u\pays
上创建索引:

create index idx_department_2 on tbl_department(id_pays, id_departement);

这些应该有助于查询。

为什么选择值始终为
'1'
的列?此外,您没有提供足够的信息来解释性能问题。这些桌子有多大?索引和主键是什么?可以显示每个表上可用的索引吗?我用“1”选择此列只是为了减少问题的请求。最初的要求要大得多。因为即使使用简化的应用程序,我的问题仍然存在。