2014-09-18 88 views
-2

我想知道的是我的查詢結果中有多少條記錄,但MySQL一直在踢我說我失去了連接。查詢本身在大約一秒鐘內運行。慢速:使用子查詢獲取查詢的結果數

SELECT COUNT(*) FROM 
(SELECT my208.eid AS contact, name AS the_status, cid208.lastmod AS status_date, boo208.boo_medium 
FROM the_emails.my208 
LEFT JOIN the_emails.cid208 ON cid208.eid = my208.eid 
LEFT JOIN the_emails.boo208 ON boo208.eid = my208.eid 
LEFT JOIN the_config.classes ON boo208.class_id = classes.id) foo 

爲什麼這需要這麼長時間,有沒有更好的方法?

+1

爲什麼不包括'COUNT(*)'在內部查詢本身。 – Rahul 2014-09-18 19:54:42

+0

很可能,表格中的連接條件錯誤。但是,如果沒有更多的信息,例如樣本數據,就不可能說。 – 2014-09-18 19:55:58

+0

@GordonLinoff你可能是對的,這是我第一天潛入新角色的數據庫,現在我正在探索。但我會想,如果我可以立即運行查詢foo本身,那麼肯定要計算它的結果應該很快呢? – 2014-09-18 19:57:24

回答

0

在您的內部查詢本身中包含count(*)。請參閱下面修改後的查詢。

試試看

SELECT my208.eid AS contact, 
name AS the_status, 
cid208.lastmod AS status_date, 
boo208.boo_medium, 
COUNT(*) as total_records 
FROM the_emails.my208 
LEFT JOIN the_emails.cid208 ON cid208.eid = my208.eid 
LEFT JOIN the_emails.boo208 ON boo208.eid = my208.eid 
LEFT JOIN the_config.classes ON boo208.class_id = classes.id 
+0

哦,我想我可能已經造成了混亂。 the_emails是一個不是表格的數據庫 – 2014-09-18 20:04:59

+0

是不是the_emails數據庫名稱? – Gervs 2014-09-18 20:06:32

+0

@Gervs是的,這是正確的 – 2014-09-18 20:07:29