【发布时间】:2021-10-15 12:54:44
【问题描述】:
我想在这里找出导致我的 MySQL 查询执行缓慢的原因。在 0.0017 秒(3.6215 秒)内获取了 1 行我该如何优化?
SELECT hadmlog.hpercode as 'HOSPITAL NUMBER', FLOOR (hadmlog.patage) as 'AGE', CONCAT (hperson.patlast, ', ', hperson.patfirst, ' ',hperson.patmiddle) as 'PROFILE', hcity.ctyname as 'DISTRICT', hadmlog.disdate as 'DISCHARGED DATE'
FROM hadmlog
INNER JOIN hperson ON hadmlog.hpercode=hperson.hpercode
INNER JOIN haddr ON hadmlog.hpercode=haddr.hpercode
INNER JOIN hcity ON haddr.ctycode=hcity.ctycode
WHERE hadmlog.patage BETWEEN '1' AND '4'
AND hperson.patsex = 'M'
AND DATE(hadmlog.disdate) = DATE(curdate())
AND haddr.haddrdte = ( select max(haddrdte)
from haddr
where haddr.hpercode = hperson.hpercode )
ORDER BY Profile;
【问题讨论】:
-
请提供解释方案......
-
... 并为所有使用的表提供完整的 CREATE TABLE,包括索引。
-
...告诉我们每个表有多少条记录
-
“在 0.0017 秒 (3.6215 秒) 内获取 1 行”是什么意思?
-
您需要向我们展示表和索引定义,以及每个表的行数。也许您的表格定义不佳。也许索引没有正确创建。也许您认为您在该列上没有索引。没有看到表和索引定义,我们无法判断。我们需要行计数,因为这会影响查询计划。如果您知道如何执行
EXPLAIN或获取执行计划,请将结果也放入问题中。如果您没有索引,请访问use-the-index-luke.com。
标签: mysql sql performance query-optimization groupwise-maximum