解释说,正在采取超过5秒是给我上面的查询的SQL(在phpMyAdmin)。我读到我们可以研究Explain SQL
来优化查询。任何人都可以告诉这个解释SQL告诉任何事情吗?
谢谢你们。
编辑:
查询本身:
SELECT
a.`depart` , a.user,
m.civ, m.prenom, m.nom,
CAST(GROUP_CONCAT(DISTINCT concat(c.id, '~', c.prenom, ' ', c.nom)) AS char) AS coordinateur,
z.dr
FROM `0_activite` AS a
JOIN `0_member` AS m ON a.user = m.id
LEFT JOIN `0_depart` AS d ON (m.depart = d.depart AND d.rank = 'mod' AND d.user_sec =2)
LEFT JOIN `0_member` AS c ON d.user_id = c.id
LEFT JOIN `zone_base` AS z ON m.depart = z.deprt_num
GROUP BY a.user
编辑2:两个表a
和d
的
结构。顶部:a
和底部:d
编辑3:
我想在此查询什么?
我首先想从表中0_activite
获得“走”和“用户”(这是一个ID)的值。接下来,我想从0_member
的ID我从0_activite
通过“用户”获得人(CIV,prenom和名称)的名称,与0_member
.ID匹配0_activite
。用户。这里出发缺少也是身份证的部门。
所以在这一点上,我已经从两个表0_activite
和0_member
的人离开,身份证,文明,诺姆和prenom。
接下来,我想知道哪个医生是这个出发有关,这从我得到zone_base
。在0_activite
和0_member
中出发的价值相同。
然后是棘手的部分。 0_member
中的一个人可以与多个出发点相关联,并存储在0_depart
中。另外,每个用户都有一个关卡,其中一个是'mod',代表主持人。现在,我想让所有在第一位用户所在位置的主持人都能够再次获得0_member
的名称。我也有一个可变的user_sec,但这在这方面可能不那么重要,尽管我不能忽视它。
这是什么使查询一个棘手的一个。 0_member的存储ID,用户名,+一个离去,0_depart是存储用户的所有的出发,一行每个离去,0_activite
存储着一些其他的东西,我想那些有关通过0_activite
,其余用户ID。
希望我已经明确。如果我不是,请让我知道,我会再次尝试编辑这篇文章。
很多人再次感谢。
在这里查看查询也会非常有帮助。 – 2011-05-30 22:23:15
只要你显示表结构(包含数据类型)和查询 – Ibu 2011-05-30 22:34:03
@will A,@,你会得到很好的解释:) – 2011-05-30 22:49:21