gpt4 book ai didi

Mysql查询速度确实很慢。如何提高查询速度?

转载 作者:行者123 更新时间:2023-11-29 11:43:52 25 4
gpt4 key购买 nike

我想要为我的患者提供最新结果。以下sql在mysqlworkbench中87秒后返回69,000个结果。我已将“日期”和“患者ID”列作为索引。

select Max(date) as MaxDate, PatientID 
from assessment
group by PatientID

我认为我的表总共大约有 440,000 个。是因为我的 table “大”吗?

有没有办法提高此查询的速度,因为我必须将此查询嵌入到其他查询中。例如如下:

select aa.patientID, assessment.Date, assessment.result
from assessemnt
inner join
(select Max(date) as MaxDate, PatientID
from assessment
group by PatientID) as aa
on aa.patientID = assessment.patientID and aa.MaxDate = assessment.Date

以上将为我提供每位患者的最新评估结果。然后我还会嵌入这段代码来做其他事情......所以我真的需要加快速度。有人可以帮忙吗?

最佳答案

我想知道这个版本在使用正确的索引时是否会有更好的性能:

select a.patientID, a.Date, a.result
from assessemnt a
where a.date = (select aa.date
from assessment aa
where aa.patientID = a.patientID
order by aa.date desc
limit 1
);

然后您需要一个关于评估(患者ID,日期)的索引。

编辑:

另一种方法使用评估(患者 ID、日期、结果)上的索引:

select a.*
from (select a.patient_id, a.date, a.result,
(@rn := if(@p = a.patient_id, @rn + 1,
if(@p := a.patient_id, 1, 1)
)
) as rn
from assessment a cross join
(select @p := -1, @rn := 0) params
order by patient_id desc, date desc
) a
where rn = 1;

关于Mysql查询速度确实很慢。如何提高查询速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com