【发布时间】:2021-08-01 00:47:50
【问题描述】:
我有一个执行速度很慢的 LEFT JOIN mysql 查询,我正在寻找改进。 我有一个表“VM”列出了“VmId”(+ 一些其他数据)和另一个表“VM_Status”列出了 VM 的状态(上/下),每一行都有一个“inputDate”。
表 VM 为 7.000 行,表 VM_Status 为 76.000 行
我需要选择 7.000 VM 的最新状态
我的查询如下,执行需要 25 秒:
SELECT
VM.*,
`VM_Status`.`Status` AS `Status`
FROM VM
left join (
select
*
from
`VM_Status` `s1`
where
(
`s1`.`InputDate` = (
select
max(`s2`.`InputDate`)
from
`VM_Status` `s2`
where
(`s1`.`VmId` = `s2`.`VmId`)
)
)
) `VM_Status` on(
(
`VM_Status`.`VmId` = `WORKLOAD`.`VmId`
)
)
我怎样才能更快地做到这一点?
【问题讨论】:
-
查看添加的标签。
标签: mysql greatest-n-per-group