我有以下各表數據庫:MySQL查詢非常通過對組慢和計數
醫院(〜28K行), 檢查(〜116K行), 問題(〜290K行)
醫院有檢查,每次檢查有零或多個問題。我有以下查詢:
SELECT count(*) as count, BName, BCity, BAddress, BState, BZip, Ins_date, BCountry, Ins_Type
FROM (SELECT b.id as ID, b.hospital_name as BName, b.city as BCity, b.address as BAddress, b.country as BCountry, b.state as BState, b.zip as
BPostal, i.date as Ins_date, v.type as Ins_Type
FROM hospital_table b, inspection_table i, issue_table v
WHERE b.id = i.business_id
AND i.id = v.inspection_id
ORDER BY b.hospital_name, i.date DESC) AS sumissues
GROUP BY ID
ORDER BY count DESC;
我希望和得到的輸出是:
112 | Burnaby Memorial | Burnaby | 3935 Kincaid St | BC | 2017-07-19 | Canada | Cleanliness
問題是,它需要大約40秒運行。我有一個外鍵索引,和inspection_table.date。關於如何優化這個的任何想法?
爲什麼要在內部查詢中命令'ORDER BY b.hospital_name,i.date DESC' ??我認爲這是不必要的。只需將其刪除並再次嘗試。 –
你想要算什麼?然後每天檢查一次?每家醫院的問題數量?還有別的嗎?你預計每家醫院有一行作爲輸出嗎?你的問題是足夠詳細的,以提供狡猾的答案。 –
你可以運行解釋與您的查詢和發佈結果,這將有助於提供更好的答案。 https://dev.mysql.com/doc/refman/5.7/en/explain.html – Aknosis