Cari nilai maksimum dalam lajur berkumpulan jadual besar
Dalam contoh ini, anda perlu mengekstrak baris dengan nilai maksimum lajur tertentu daripada setiap kumpulan jadual besar tanpa melakukan carian berbilang jadual yang tidak cekap. Pertimbangkan borang berikut:
<code>SCORES ID ROUND SCORE 1 1 3 1 2 6 1 3 2 2 1 10 2 2 12 3 1 6</code>
Matlamat anda adalah untuk mendapatkan pusingan terkini bagi setiap ID unik dan skor yang sepadan. Output yang dikehendaki adalah seperti berikut:
<code>ID ROUND SCORE 1 2 6 2 2 12 3 1 6</code>
Penyelesaian yang cekap menggunakan fungsi tetingkap
Kaedah yang cekap ialah menggunakan fungsi tetingkap bersama dengan kata kunci DISTINCT:
<code class="language-sql">SELECT DISTINCT id ,MAX(round) OVER (PARTITION BY id) AS round ,FIRST_VALUE(score) OVER (PARTITION BY id ORDER BY round DESC) AS score FROM SCORES WHERE id IN (1,2,3) ORDER BY id;</code>
Pertanyaan ini menggunakan konsep utama berikut:
Pertanyaan yang dioptimumkan ini dengan cekap mengembalikan pusingan dan markah terkini untuk setiap ID unik tanpa perlu mengimbas jadual beberapa kali, kekal cekap walaupun untuk meja besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Nilai Maksimum dalam Lajur untuk Setiap Kumpulan dalam Jadual Besar dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!