Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Nilai Maksimum dan Data Sepadan dengan Cekap dalam SQL?
Mengoptimumkan Pertanyaan SQL: Mendapatkan Nilai Maksimum dan Data Berkaitan
Artikel ini menunjukkan kaedah yang cekap untuk mendapatkan nombor versi maksimum bagi setiap ID dan teg yang sepadan daripada jadual SQL yang besar. Elakkan kaedah yang kurang cekap seperti pertanyaan bersarang atau pengumpulan mudah.
Penyelesaian optimum menggunakan fungsi ROW_NUMBER()
:
<code class="language-sql">SELECT s.id, s.tag, s.version FROM ( SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.version DESC) AS rnk FROM YourTable t ) s WHERE s.rnk = 1;</code>
Begini cara pertanyaan ini berfungsi:
t.*
) daripada YourTable
(gantikan YourTable
dengan nama jadual sebenar anda). Yang penting, ia memberikan pangkat (rnk
) kepada setiap baris dalam setiap id
partition, disusun mengikut version
dalam tertib menurun. version
tertinggi bagi setiap id
menerima pangkat 1.rnk = 1
. Ini dengan cekap mengasingkan version
maksimum dan id
dan tag
yang berkaitan untuk setiap id
unik.Menggunakan ROW_NUMBER()
memberikan kelebihan prestasi yang ketara berbanding pendekatan alternatif, terutamanya dengan set data yang besar. Ia mengelakkan overhed prestasi pertanyaan bersarang atau klausa GROUP BY
dengan fungsi agregat, menjadikannya kaedah pilihan untuk mendapatkan semula data yang cekap dalam senario ini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nilai Maksimum dan Data Sepadan dengan Cekap dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!