Mysql 获取join上的最后一个条目

Mysql 获取join上的最后一个条目,mysql,Mysql,我有这两张桌子。一个包含bug,让我们称之为bug,另一个包含解决方案。一个bug可能有多个解决方案(或者状态,如果可以的话),我想得到最后一个 现在,我是这样做的: Select b.*, ap.approveMistakeId from bugs_table as b LEFT JOIN (select approveId, approveCause, approveDate, approveInfo, approveUsername, mistake

我有这两张桌子。一个包含bug,让我们称之为bug,另一个包含解决方案。一个bug可能有多个解决方案(或者状态,如果可以的话),我想得到最后一个

现在,我是这样做的:

Select b.*, ap.approveMistakeId 
from bugs_table as b
LEFT JOIN (select approveId, approveCause, approveDate, approveInfo, 
                  approveUsername, mistakeId as approveMistakeId 
           from approve_table 
           order by approveDate desc) AS ap 
ON m.mistakeId = ap.approveMistakeId 
GROUP BY b.bugId
这不是一个完整的查询,它只是显示我是如何处理它的。真正的查询连接了10多个表

问题是,使用此子选择,查询将运行约3.3秒,并返回约2.4K记录。如果没有这个查询,它将运行0.4s,这是可以接受的。我已经在approveDate上创建和索引,但这似乎并没有解决问题

解决方案是否可以是从该查询创建的视图,然后连接到此查询?或者有没有其他方法可以做到这一点


谢谢

对于连接两个表,基本上应该有一些连接条件。如果我将
m.mistakeId=ap.approveMistakeId
设置为
b.mistakeId=ap.approveMistakeId
,那么您也可以选择一个更简单的连接,如:

Select b.*, ap.approveMistakeId, ap.approveDate 
from bugs_table as b
     INNER JOIN approve_table as ap ON b.mistakeId = ap.approveMistakeId
order by ap.approveDate desc 

问题是子选择。解决方案是去规范化。是的,我知道,这不是最好的解决方案,但肯定是最快的


尝试了聚合自排序,但这只增加了时间。与使用视图连接相同。

Uou应对子选择的性能进行基准测试。不需要按顺序。是的,子选择是邪恶的部分。