Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mendapatkan Hanya Baris Terkini dalam MySQL JOIN dengan Penomboran?
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:
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!