CROSS APPLY vs. INNER JOIN: Bilakah CROSS APPLY Bersinar?
Walaupun INNER JOIN
adalah pilihan untuk kebanyakan perhubungan satu dengan banyak, CROSS APPLY
menawarkan faedah prestasi yang ketara dalam situasi tertentu.
Kelebihan Utama CROSS APPLY:
Tidak seperti INNER JOIN
, CROSS APPLY
tidak mewajibkan fungsi takrif pengguna (UDF) untuk jadual sebelah kanan. Perbezaan yang kelihatan kecil ini menjadi kritikal apabila mengendalikan set data besar yang memerlukan pembahagian atau penomboran.
Keunggulan dalam Pembahagian dan Penomboran:
Walaupun pertanyaan mudah menggunakan INNER JOIN
dan CROSS APPLY
mungkin menghasilkan rancangan pelaksanaan yang serupa, CROSS APPLY
menunjukkan kecekapan unggul dengan set data besar yang memerlukan pembahagian atau penomboran. Dengan menghapuskan syarat JOIN
eksplisit, ia membenarkan pengoptimum pangkalan data untuk menggunakan hasil perantaraan yang dicache, yang membawa kepada pelaksanaan pertanyaan yang lebih pantas.
Contoh Ilustrasi:
Pertanyaan berikut menunjukkan kelebihan CROSS APPLY
berbanding INNER JOIN
apabila melelang beberapa kali di atas jadual sebelah kanan untuk setiap baris jadual sebelah kiri:
<code class="language-sql">/* CROSS APPLY */ SELECT t1.*, t2o.* FROM t1 CROSS APPLY ( SELECT TOP 3 * FROM t2 WHERE t2.t1_id = t1.id ORDER BY t2.rank DESC ) t2o</code>
Pertanyaan ini dengan cekap mendapatkan semula tiga t2
rekod teratas untuk setiap baris t1
. Meniru fungsi ini dengan INNER JOIN
akan menjadi jauh lebih kompleks dan kurang cekap.
Tanda Aras Prestasi:
Ujian pada jadual rekod 20,000,000 menunjukkan perbezaan dramatik: CROSS APPLY
dilaksanakan hampir serta-merta, manakala pertanyaan INNER JOIN
setara menggunakan fungsi CTE dan tetingkap mengambil masa kira-kira 30 saat.
Ringkasan:
CROSS APPLY
ialah pilihan terbaik apabila keadaan JOIN
eksplisit tidak tersedia atau apabila berurusan dengan pembahagian atau penomboran set data yang besar. Kecekapannya dalam senario ini menjadikannya alat yang tidak ternilai untuk pengoptimuman pertanyaan.
Atas ialah kandungan terperinci Bilakah Anda Harus Memilih CROSS APPLY Daripada INNER JOIN untuk Prestasi Optimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!