Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Baris dengan Cekap mengikut Selang Masa dalam SQL?

Bagaimana untuk Mengira Baris dengan Cekap mengikut Selang Masa dalam SQL?

Barbara Streisand
Lepaskan: 2025-01-05 08:07:40
asal
830 orang telah melayarinya

How to Efficiently Count Rows by Time Intervals in SQL?

Mengira Baris mengikut Selang Masa: Mendedahkan Pendekatan Terbaik

Aplikasi sering berurusan dengan peristiwa yang dicap masa dan memerlukan analisis data berdasarkan masa tertentu selang waktu. Untuk mengira bilangan peristiwa dalam setiap selang dengan berkesan, pembangun mungkin memikirkan pelbagai pendekatan.

1. Pertanyaan SQL Dinamik untuk Selang Sewenang-wenang

Menggunakan pertanyaan SQL untuk mengumpulkan acara mengikut selang masa sewenang-wenangnya ialah kaedah yang cekap dan diutamakan. Walau bagaimanapun, Postgres tidak menyokong fungsi ini secara asli.

2. Kaedah Brute Force dengan Isih Masa

Menyoal semua rekod dalam tempoh masa mula/tamat dan mengiranya secara manual mengikut selang masa yang dikehendaki ialah pendekatan yang mudah tetapi menyusahkan. Ia memerlukan pengisihan hasil mengikut cap masa dan tiada penyesuaian selang dinamik.

3. Pra-Penyimpanan Data Selang

Mengekalkan medan berasingan untuk setiap selang dalam jadual acara boleh mengelakkan pengiraan masa jalan dan memudahkan pelaporan. Walau bagaimanapun, kaedah ini menggandakan saiz jadual, yang mungkin tidak optimum.

Amalan Terbaik

Amalan terbaik bergantung pada keperluan khusus aplikasi dan saiz data:

  • Untuk sejumlah besar selang atau penyesuaian selang sewenang-wenang, pertanyaan SQL dinamik ialah sesuai. Walaupun Postgres tidak mempunyai sokongan terbina dalam, penyelesaian wujud menggunakan fungsi tetingkap seperti plumbum().
  • Untuk sebilangan kecil selang tetap (mis., hari atau minggu), pra-menyimpan data selang boleh memudahkan pelaksanaan pertanyaan tetapi meningkatkan saiz jadual.
  • Untuk penyelesaian masa nyata atau di mana pertumbuhan jadual adalah kebimbangan, kaedah brute force dengan pengisihan masa mungkin lebih sesuai.

Postgres 14 dengan fungsi date_bin()

Untuk Postgres 14 dan lebih baharu , fungsi date_bin() membenarkan pengumpulan langsung cap masa ke dalam selang waktu. Ini memudahkan pertanyaan dan memberikan hasil yang cekap.

Contoh: Mengira Acara dalam Setiap Selang 15 Minit

Untuk mengira acara dalam setiap selang 15 minit dalam julat masa tertentu menggunakan date_bin() fungsi:

SELECT date_bin('15 min', e.ts, '2018-05-01') AS start_time
     , count(e.ts) AS events
FROM   event e
GROUP  BY 1
ORDER  BY 1;
Salin selepas log masuk

Nota:

Untuk Postgres 13 dan lebih awal, pendekatan alternatif menggunakan generate_series() dan fungsi tetingkap tersedia.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Baris dengan Cekap mengikut Selang Masa dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan