所以,我有這兩個表。一個包含,讓我們打電話給他們,錯誤,另一個包含解決方案。一個錯誤可能有多個解決方案(或者狀態,如果可能的話),我想得到最後一個。獲取加入的最後一個條目
現在,我在做這樣的:
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上創建並編制索引,但似乎沒有解決問題。
解決方案是否可以是一個視圖,該視圖是從此查詢創建的,然後加入到此查詢中?或者有沒有辦法以其他方式做到這一點?
謝謝!
你應該對子選擇的性能進行基準測試。而順序是沒有必要的。 – ajreal
是的,子選擇是邪惡的一部分。 –