Rumah >pangkalan data >tutorial mysql >Apakah Cara Terpantas untuk Memotong Cap Masa kepada Selang 5 Minit dalam PostgreSQL?

Apakah Cara Terpantas untuk Memotong Cap Masa kepada Selang 5 Minit dalam PostgreSQL?

DDD
DDDasal
2024-12-26 12:14:10576semak imbas

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

Memangkas Cap Masa kepada Sempadan 5-Minit Dengan Cekap dalam Postgres

Memangkas cap masa adalah penting untuk analisis temporal. Postgres menawarkan fungsi date_trunc, membolehkan kami membundarkan cap masa kepada pelbagai unit. Walau bagaimanapun, untuk memotong ke sempadan 5 minit terdekat, pendekatan yang lebih khusus diperlukan.

Lazimnya, kaedah mudah berikut digunakan:

date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'

Walau bagaimanapun, apabila prestasi kritikal, adalah penting untuk meneroka penyelesaian terpantas yang mungkin.

Pendekatan Alternatif: Menerusi Epoch Time

Pendekatan alternatif melibatkan penukaran cap masa kepada cap masa zaman dan kemudian memotongnya. Kaedah ini dinyatakan sebagai:

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

Penanda Aras dan Keputusan

Untuk menilai prestasi kedua-dua kaedah, penanda aras tidak formal telah dijalankan terhadap meja besar dengan 4 juta barisan. Pertanyaan telah diselang-seli untuk mengelakkan kelebihan caching.

Keputusan:

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

Kesimpulan

Anehnya, kaedah menggunakan date_trunc dan date_part secara konsisten mengatasi pendekatan masa zaman. Walaupun lebih serba boleh dan lebih mudah untuk diparameterkan, kaedah masa zaman mengorbankan beberapa prestasi untuk julat pemangkasan unit masa yang lebih luas.

Oleh itu, untuk memotong cap masa kepada sempadan 5 minit khususnya dalam Postgres, kaedah mudah menggunakan date_trunc dan date_part ialah pendekatan yang disyorkan.

Atas ialah kandungan terperinci Apakah Cara Terpantas untuk Memotong Cap Masa kepada Selang 5 Minit dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn