Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Memilih Rekod Terkini dalam MySQL Berdasarkan Berbilang Tarikh?

Bagaimana untuk Cekap Memilih Rekod Terkini dalam MySQL Berdasarkan Berbilang Tarikh?

Patricia Arquette
Patricia Arquetteasal
2024-12-31 11:01:14431semak imbas

How to Efficiently Select the Most Recent Records in MySQL Based on Multiple Dates?

Memilih Rekod Terkini daripada Jadual MySQL Berdasarkan Berbilang Tarikh

Dalam jadual MySQL menyimpan data dengan cap masa, kaedah, ID, dan respons, matlamatnya ialah untuk mendapatkan semula rekod terkini bagi setiap gabungan kaedah dan ID.

Untuk mencapai ini, anda boleh menggunakan pertanyaan yang dioptimumkan berikut:

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;

Pertanyaan ini memanfaatkan pembolehubah MySQL untuk mengelakkan keperluan untuk menyertai. Ia menggunakan langkah berikut:

  1. Untuk setiap baris dalam jadual rpc_responses, ia menetapkan kumpulan baharu untuk kaedah mengenal pasti kumpulan kaedah yang berbeza.
  2. Baris dengan kaedah yang sama tergolong dalam kumpulan yang sama.
  3. Barisan cap masa terkini dalam setiap kumpulan kaedah dipilih dengan mengisih mengikut kaedah dan cap masa dalam menurun pesanan.
  4. Pertanyaan menapis hasil untuk hanya memasukkan baris yang paling terkini dalam setiap kumpulan kaedah.

Pendekatan ini dengan cekap mendapatkan semula respons terkini untuk setiap gabungan unik kaedah dan ID tanpa perlu menyertai, menghasilkan prestasi yang optimum.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Memilih Rekod Terkini dalam MySQL Berdasarkan Berbilang Tarikh?. 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