我有以下各表数据库: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