Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mendapatkan Hanya Baris Terkini dalam MySQL JOIN dengan Penomboran?

Bagaimana untuk Cekap Mendapatkan Hanya Baris Terkini dalam MySQL JOIN dengan Penomboran?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-03 13:47:40582semak imbas

How to Efficiently Retrieve Only the Most Recent Row in a MySQL JOIN with Pagination?

Mengambil Baris Terkini Hanya dalam MySQL JOIN dengan Penomboran

Apabila berurusan dengan jadual data sejarah seperti customer_data, selalunya diingini untuk menyertai hanya baris terbaharu ke jadual lain, sambil turut mengurus penomboran.

Pertanyaan Asal:

SELECT *, CONCAT(title,' ',forename,' ',surname) AS name
FROM customer c
INNER JOIN customer_data d on c.customer_id=d.customer_id
WHERE name LIKE '%Smith%' LIMIT 10, 20

Dioptimumkan JOIN dengan Klausa WHERE:

Untuk mendapatkan semula yang terbaharu sahaja baris untuk setiap pelanggan, tambahkan syarat berikut pada WHERE klausa:

...
WHERE
  d.customer_data_id IN (
    SELECT MAX(customer_data_id)
    FROM customer_data
    WHERE customer_id = c.customer_id
  )
...

Penyelesaian Pengindeksan Alternatif:

Untuk prestasi yang lebih baik, terutamanya dalam pertanyaan berat, pertimbangkan untuk membuat indeks pada lajur (id_pelanggan, id_pelanggan) dalam data_pelanggan . Ini membolehkan MySQL mengenal pasti baris terbaharu dengan pantas untuk setiap pelanggan.

Contoh Klausa WHERE dengan Indeks:

...
WHERE
  d.customer_id = c.customer_id AND
  d.customer_data_id = (
    SELECT MAX(customer_data_id)
    FROM customer_data
    WHERE customer_id = c.customer_id
  )
...

CONCAT dengan LIKE:

Ya, menggunakan CONCAT dengan LIKE ialah kaedah yang sah untuk mencari pada berbilang medan yang digabungkan bersama. Ini amat berguna apabila lajur asal tidak diindeks dan biasanya akan menghasilkan imbasan jadual penuh.

Pertimbangan Tambahan:

  • Penomboran: Klausa LIMIT dan OFFSET hendaklah digunakan pada pertanyaan luar (iaitu, di luar subquery).
  • JOIN Type: INNER JOIN biasanya betul untuk mendapatkan semula semua baris yang sepadan daripada kedua-dua jadual. Walau bagaimanapun, anda mungkin mahu mencuba jenis JOIN yang lain untuk mengoptimumkan prestasi berdasarkan struktur data khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mendapatkan Hanya Baris Terkini dalam MySQL JOIN dengan Penomboran?. 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