CROSS APPLY lwn. INNER JOIN: Mengoptimumkan Pemisahan Set Data Besar
Apabila berurusan dengan set data yang luas, terutamanya yang memerlukan pembahagian, CROSS APPLY
memberikan alternatif yang menarik kepada INNER JOIN
. Artikel ini menyerlahkan kelebihan utamanya dan menggambarkan prestasi unggulnya dengan contoh praktikal.
Kelebihan CROSS APPLY
CROSS APPLY
cemerlang dalam mendapatkan subset data dalam cara terbahagi, sesuai untuk senario seperti halaman atau penomboran. Keupayaan pembahagian yang wujud ini meningkatkan prestasi dengan ketara berbanding INNER JOIN
dalam konteks sedemikian.INNER JOIN
dengan subkueri di sebelah kanan, CROSS APPLY
mengelakkan keperluan untuk Fungsi Ditentukan Pengguna (UDF), memudahkan pertanyaan dan sering meningkatkan kelajuan pelaksanaan.Contoh Ilustrasi: Pemilihan Data Bersarang dengan Penomboran
Mari kita pertimbangkan senario di mana kita perlu mendapatkan semula tiga rekod teratas daripada Table2
untuk setiap baris dalam Table1
, melaksanakan penomboran.
<code class="language-sql">/* Using CROSS APPLY */ SELECT t1.*, t2o.* FROM Table1 t1 CROSS APPLY ( SELECT TOP 3 * --Selecting top 3 instead of TOP (t1.id) for clarity and assuming a fixed number of records needed per partition. Adjust as needed for dynamic top N. FROM Table2 t2 WHERE t2.t1_id = t1.id ORDER BY rank DESC ) t2o; /* Equivalent INNER JOIN approach (less efficient for large datasets) */ SELECT t1.*, t2.* FROM Table1 t1 INNER JOIN ( SELECT *, ROW_NUMBER() OVER (PARTITION BY t1_id ORDER BY rank DESC) as rn FROM Table2 ) t2 ON t1.id = t2.t1_id WHERE t2.rn <= 3;</code>
Dalam contoh ini, CROSS APPLY
menawarkan penyelesaian yang lebih bersih dan cekap untuk memilih tiga rekod teratas untuk setiap partition. Walaupun kedua-dua pertanyaan mencapai hasil yang sama, CROSS APPLY
menunjukkan prestasi unggul dengan set data yang besar dan penomboran disebabkan oleh mekanisme pemilihan partition yang wujud. Contoh INNER JOIN
memerlukan subkueri dengan fungsi tetingkap, menambah overhed.
Contoh ini mempamerkan faedah prestasi CROSS APPLY
apabila mengendalikan pilihan bersarang, terutamanya apabila INNER JOIN
bergelut. Menggunakan CROSS APPLY
menghasilkan pelaksanaan pertanyaan yang lebih pantas dan kod yang lebih ringkas, terutamanya apabila bekerja dengan data terbahagi.
Atas ialah kandungan terperinci Bilakah Anda Harus Memilih CROSS APPLY Daripada INNER JOIN untuk Pemisahan Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!