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

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

Patricia Arquette
發布: 2024-12-21 17:33:11
原創
248 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板