解釋說,正在採取超過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