Mengekstrak Nilai Maksimum dan Data Berkaitan daripada Set Data Besar
Bekerja dengan set data yang besar selalunya memerlukan kaedah yang cekap untuk mengekstrak nilai maksimum daripada lajur sambil pada masa yang sama mendapatkan semula nilai yang sepadan daripada lajur lain. Teknik standard seperti pernyataan SELECT bersarang atau GROUP BY
mudah dengan MAX()
menjadi tidak cekap apabila berurusan dengan berjuta-juta baris.
Penyelesaian unggul menggunakan fungsi tetingkap ROW_NUMBER()
. Fungsi ini menyusun baris dalam partition, membolehkan kami mengenal pasti baris dengan nilai maksimum dalam lajur tertentu. Pertimbangkan jadual dengan berbilang lajur; pertanyaan berikut dengan cekap mendapatkan semula versi maksimum untuk setiap ID dan tag yang sepadan:
<code class="language-sql">SELECT id, tag, version FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY version DESC) as rn FROM YourTable ) ranked_data WHERE rn = 1;</code>
Pertanyaan ini membahagikan data mengikut lajur id
, menyusun setiap partition dengan version
dalam tertib menurun dan memberikan kedudukan (rn
) kepada setiap baris dalam partitionnya. Pertanyaan luar kemudian memilih hanya baris dengan kedudukan 1, dengan berkesan mengembalikan maksimum version
untuk setiap id
dan tag
yang berkaitan dengannya. Pendekatan ini mengelakkan kesesakan prestasi pertanyaan bersarang dan menyediakan penyelesaian yang jauh lebih pantas untuk set data yang besar.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Maksimum dan Lajur Sepadan dengan Cekap daripada Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!