首頁 > 資料庫 > mysql教程 > 在 PostgreSQL 中將時間戳截斷為 5 分鐘間隔的最快方法是什麼?

在 PostgreSQL 中將時間戳截斷為 5 分鐘間隔的最快方法是什麼?

DDD
發布: 2024-12-26 12:14:10
原創
575 人瀏覽過

What's the Fastest Way to Truncate Timestamps to 5-Minute Intervals in PostgreSQL?

在 Postgres 中有效地將時間戳截斷到 5 分鐘邊界

截斷時間戳對於時間分析至關重要。 Postgres 提供了 date_trunc 函數,使我們能夠將時間戳記舍入到各種單位。然而,為了截斷到最近的 5 分鐘邊界,需要更具體的方法。

通常採用以下簡單方法:

date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
登入後複製

但是,當效能至關重要時,探索盡可能最快的解決方案至關重要。

替代方法:穿越紀元時間

另一種方法是將時間戳轉換為紀元時間戳,然後截斷它。此方法表示為:

SELECT to_timestamp(
    floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min'))
    * EXTRACT(epoch FROM interval '5 min')
) FROM huge_table AS ht LIMIT 4000000
登入後複製

基準測試和結果

為了評估這兩種方法的效能,針對一個包含400 萬個資料的大表進行了非正式基準測試行。交替查詢以防止快取優勢。

結果:

Method Run 1 Run 3 Run 5
Epoch Time 39.368 seconds 39.526 seconds 39.883 seconds
Hour and Minute 34.189 seconds 37.028 seconds 32.397 seconds

結論

令人驚訝的是,該方法使用date_trunc 和date_part 始終優優於紀元時間方法。儘管紀元時間方法更通用且更易於參數化,但它會犧牲一些效能來實現更廣泛的時間單位截斷。

因此,為了將時間戳截斷到 5 分鐘邊界(特別是在 Postgres 中),使用 date_trunc 的簡單方法而 date_part 是推薦的方法。

以上是在 PostgreSQL 中將時間戳截斷為 5 分鐘間隔的最快方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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