簡體   English   中英

查詢MySQL中的自聯接

[英]Query for self join in MySQL

我有一個查詢獲得正確的結果,但它需要5.5秒來獲得輸出..是否有任何其他方式為此編寫查詢 -

SELECT metricName, metricValue 
FROM Table sm  
WHERE createdtime = (
    SELECT MAX(createdtime) 
    FROM Table b 
    WHERE sm.metricName = b.metricName 
    AND b.sinkName='xx' 
) 
AND sm.sinkName='xx'

在您的代碼中,必須為外部查詢的每個結果行運行子選擇,這應該非常昂貴。 相反,您可以在單獨的查詢中選擇過濾器數據並相應地加入:

SELECT `metricName`, `metricValue` FROM Table sm 
INNER JOIN (SELECT max(`createdtime`) AS `maxTime, `metricName` from Table b WHERE b.sinkName='xx' GROUP BY `metricName` ) filter
  ON (sm.`createdtime` = filter.`maxTime`) AND ( sm.`metricName` = filter.`metricName`)
WHERE sm.sinkName='xx'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM