我接手了一个大项目,随着数据库越来越大,部分代码停止工作,
这是查找rendering_requests
最后一个rending_log
的查询pending
,有时有一些日志条目没有状态变化并记录下来,因为noaction
我们不需要统计它们。这就是我从查询中了解到的。
SELECT
COUNT(rr.rendering_id) AS recordCount
FROM
rendering_request rr, rendering_log rl
WHERE
rl.rendering_id = rr.rendering_id
AND rl.status = 'pending' AND
rl.log_id = (
SELECT rl1.log_id
FROM rendering_log rl1
WHERE
rl.rendering_id = rl1.rendering_id AND
rl1.status = 'pending'
AND rl1.log_id = (
SELECT rl2.log_id
FROM rendering_log rl2
WHERE rl1.rendering_id = rl2.rendering_id AND rl2.status!='noaction'
ORDER BY rl2.log_id DESC LIMIT 1
)
ORDER BY rl1.log_id DESC
LIMIT 1
)
例如
rendering_id=1
有多个日志
status=noaction
status=noaction
status=pending
和
rendering_id=2
有多个日志
status=noaction
status=assigned
status=noaction
status=pending
当我们运行这个查询时,它应该count=1
只显示rendering_id=1
我们想要的记录。
现在这个查询已经停止工作,它挂起 mysql 服务器