Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Data Lokasi Terkini dengan Cekap untuk Setiap Rekod dalam Penyata Bergabung?

Bagaimana untuk Mendapatkan Data Lokasi Terkini dengan Cekap untuk Setiap Rekod dalam Penyata Bergabung?

Susan Sarandon
Lepaskan: 2024-12-08 02:37:10
asal
812 orang telah melayarinya

How to Efficiently Retrieve the Most Recent Location Data for Each Record in a Joined Statement?

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

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