gpt4 book ai didi

mysql - 查找 "unanswered"评论

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

我正在处理一个设计糟糕的表,无法找出更快的查询。当前的查询由之前的开发人员编写,需要 20 秒才能运行。

有 18k 条名为“notes”的记录,带有 topic_id、日期和紧急程度。我需要所有被认为是“紧急”的记录。对于紧急的注释,它的紧急级别必须为 2。但是,如果自最近的 2 级注释以来,已经有 3、4 或 5 级注释,则该注释被视为不紧急同一个话题。换句话说,当一个主题获得 2 级注释时,它被认为是紧急的,直到它获得 3、4 或 5 级注释。如果它收到另一张纸条,它又被认为是紧急的。

我需要得到所有的紧急笔记。在我看来,它是这样的:

  • 按 order_id 对笔记进行分组。
  • 过滤掉所有没有紧急级别为 2 的注释的组。
  • 仅选择最近的 2、3、4 或 5 级注释的那些组不是 2。

据我所知,18k 条记录都与 1k 条主题相关。然后,我将检查每个组的成员,将组过滤到只有那些在某个时候有紧急通知的人。最后,我将找到 2、3、4 或 5 级的最新笔记……如果是 2,请返回它,因为这意味着它有 Unresolved 笔记。否则,丢弃它。

有什么想法吗?

编辑:我相信我找到了解决方案...

SELECT *, MAX(note_date) AS recent FROM ace_rp_notes n

LEFT JOIN ace_rp_orders o
ON n.order_id = o.id

WHERE n.urgency_id IN (2,3,4,5)

GROUP BY order_id
HAVING urgency_id = 2
AND recent = n.note_date

根本不需要时间。

最佳答案

我会采取以下方法:

SELECT n.*
FROM ace_rp_notes AS n
INNER JOIN (
SELECT order_id, max(note_date) as maxdate
FROM ace_rp_notes
GROUP BY order_id
HAVING urgency_id = 2
) AS md
ON n.order_id = md.order_id
AND n.note_date = md.maxdate

子查询获取每个主题的最后一条注释,然后将其与注释连接以获得最后一张票的紧急程度,然后过滤 2 以有效地要求关于主题的最后一条注释是紧急 2 来限定记录在 SELECT 中。

编辑:在子查询中而不是在子查询之外使用 HAVING 进行优化。

关于mysql - 查找 "unanswered"评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20904000/

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