首頁 >資料庫 >mysql教程 >如何有效率地檢索MySQL和PostgreSQL中每個方法和ID的最新記錄?

如何有效率地檢索MySQL和PostgreSQL中每個方法和ID的最新記錄?

Patricia Arquette
Patricia Arquette原創
2024-12-21 17:33:11291瀏覽

How to Efficiently Retrieve the Most Recent Records for Each Method and ID in MySQL and PostgreSQL?

從MySQL 表中擷取最新記錄

問題:

MySQL時間戳、方法、ID 和回應欄位的呼叫。目標是檢索方法和 ID 的所有組合的最新回應。

假設:

  • 對於每個日期,可以有一個回應給定的方法/ID。
  • 並非所有呼叫組合都必須在給定日期出現。
  • 有眾多的方法、數千個 ID 和至少 365 個不同的日期。

解決方案:

以下查詢可用於高效率擷取所需結果:利用MySQL 變數來避免JOIN:

SELECT * FROM (
    SELECT *, if(@last_method=method,0,1) as new_method_group, @last_method:=method 
    FROM rpc_responses 
    ORDER BY method, timestamp DESC
) as t1
WHERE new_method_group=1;

此查詢首先將new_method_group 值指派給每一行,表示新方法群組的開始。然後,它會過濾結果以僅包含 new_method_group 值為 1 的行,確保最終結果中僅包含每種方法的最新行。

PostgreSQL 的替代解決方案:

PostgreSQL 為此任務提供了內建功能:

SELECT DISTINCT ON (method) timestamp, method, id, response
FROM rpc_responses
WHERE 1 # some where clause here
ORDER BY method, timestamp DESC

以上是如何有效率地檢索MySQL和PostgreSQL中每個方法和ID的最新記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn