Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data Lokasi Terkini dengan Cekap untuk Setiap Rekod dalam Penyata Bergabung?
Memilih Tarikh Terkini dalam Penyata Bergabung: Menyelesaikan masalah untuk pengambilan Data Lokasi Bersejarah
Pertanyaan ini bertujuan untuk mendapatkan semula lokasi bersejarah rekod dan tarikh sepadan mereka. Walau bagaimanapun, pelaksanaan semasa mengambil masa yang terlalu lama untuk dilaksanakan dan menghasilkan rekod pendua. Output yang dijangkakan ialah senarai rekod yang dipermudahkan dengan lokasi terbaharunya.
Pertanyaan asal cuba mencari tarikh terbaharu yang dikaitkan dengan setiap id rekod dengan melaksanakan operasi cantum sendiri. Walau bagaimanapun, pendekatan ini tidak cekap dan boleh membawa kepada isu prestasi, terutamanya untuk set data yang lebih besar.
Pertanyaan Betul
Untuk mengoptimumkan pertanyaan, kami boleh menggunakan versi diperbetulkan berikut :
SELECT t1.received_id , t1.transaction_id , t1.date_modified , l.location FROM transactions t1 JOIN ( SELECT received_id, MAX(date_modified) maxmodify FROM transactions GROUP BY received_id) max_record ON max_record.received_id = t1.received_id AND max_record.maxmodify = t1.date_modified JOIN locations l ON l.location_id = t1.location_id JOIN received r ON r.received_id = t1.received_id WHERE t1.received_id = '1782' ORDER BY t1.date_modified DESC
Penjelasan
Dalam pertanyaan ini, kami memperkenalkan ungkapan jadual biasa (CTE) untuk mencari tarikh maksimum bagi setiap id rekod dalam jadual urus niaga. CTE ialah:
SELECT received_id, MAX(date_modified) AS maxmodify FROM transactions GROUP BY received_id
Kami kemudiannya menyertai jadual transaksi asal (t1) dengan CTE ini (max_record) pada medan receive_id. Selain itu, kami menapis pada lajur maxmodify untuk memastikan bahawa hanya transaksi dengan tarikh terbaharu disertakan. Ini mengoptimumkan pertanyaan dengan mengelakkan gabungan dan pendua yang tidak perlu.
Dengan pertanyaan yang dioptimumkan ini, kami boleh mendapatkan lokasi bersejarah untuk setiap rekod dengan berkesan, memastikan kami hanya mendapatkan lokasi terbaharu untuk setiap id rekod unik.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data Lokasi Terkini dengan Cekap untuk Setiap Rekod dalam Penyata Bergabung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!