Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Rekod Terkini dengan Cekap untuk Setiap Kaedah dan ID dalam MySQL dan PostgreSQL?

Bagaimana untuk Mendapatkan Rekod Terkini dengan Cekap untuk Setiap Kaedah dan ID dalam MySQL dan PostgreSQL?

Patricia Arquette
Lepaskan: 2024-12-21 17:33:11
asal
247 orang telah melayarinya

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

Mengambil semula Rekod Terkini daripada Jadual MySQL

Masalah:

Jadual MySQL menyimpan respons kepada pelbagai RPC panggilan dengan medan untuk cap masa, kaedah, ID dan respons. Matlamatnya ialah untuk mendapatkan semula respons terbaharu untuk semua gabungan kaedah dan ID.

Andaian:

  • Untuk setiap tarikh, boleh ada satu respons untuk kaedah/ID tertentu.
  • Tidak semua gabungan panggilan semestinya ada untuk sesuatu tarikh.
  • Terdapat banyak kaedah, beribu-ribu ID dan sekurang-kurangnya 365 tarikh berbeza.

Penyelesaian:

Pertanyaan berikut boleh digunakan untuk mendapatkan hasil yang diingini dengan cekap dengan menggunakan pembolehubah MySQL untuk mengelakkan a 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;
Salin selepas log masuk

Pertanyaan ini mula-mula memberikan nilai new_method_group pada setiap baris, yang menunjukkan permulaan kumpulan kaedah baharu. Ia kemudian menapis keputusan untuk memasukkan hanya baris dengan nilai new_method_group 1, memastikan bahawa hanya baris terbaharu untuk setiap kaedah disertakan dalam hasil akhir.

Penyelesaian Alternatif untuk PostgreSQL:

PostgreSQL menyediakan ciri terbina dalam untuk tugasan ini:

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

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Terkini dengan Cekap untuk Setiap Kaedah dan ID dalam MySQL dan PostgreSQL?. 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