Rumah >pangkalan data >tutorial mysql >Mengapa JOIN KIRI Saya Kadangkala Lebih Cepat Daripada JOIN DALAM dalam SQL Server?
Prestasi Sertai Pelayan SQL: Membongkar Mitos LEFT JOIN
Salah tanggapan biasa wujud mengenai prestasi menyertai SQL Server: bahawa operasi LEFT JOIN
sememangnya lebih pantas daripada operasi INNER JOIN
. Ini secara amnya tidak tepat. LEFT JOIN
memperkenalkan overhed pemprosesan tambahan kerana mereka mesti melaksanakan semua kerja INNER JOIN
dan kemudian menambah baris dengan nilai NULL
untuk entri yang tidak sepadan dalam jadual yang betul. Set hasil yang lebih besar juga menyumbang kepada peningkatan masa pelaksanaan.
Mengapa LEFT JOIN
Anda Mungkin Lebih Cepat
Jika anda memerhati pertanyaan LEFT JOIN
yang lebih pantas, sebabnya mungkin berpunca daripada faktor yang tidak berkaitan dengan jenis gabungan itu sendiri:
LEFT JOIN
mungkin boleh diabaikan berbanding dengan masa yang digunakan untuk operasi pertanyaan lain.Bila LEFT JOIN
Mungkin Menunjukkan Kelebihan
Satu-satunya senario di mana LEFT JOIN
mungkin mengatasi prestasi INNER JOIN
berada di bawah keadaan yang sangat khusus:
LEFT JOIN
overhed kurang penting daripada isu prestasi berkaitan indeks.Contoh Ilustrasi
Pertimbangkan jadual ini:
<code class="language-sql">CREATE TABLE #Test1 (ID int PRIMARY KEY, Name varchar(50) NOT NULL); CREATE TABLE #Test2 (ID int PRIMARY KEY, Name varchar(50) NOT NULL); INSERT INTO #Test1 VALUES (1, 'One'), (2, 'Two'), (3, 'Three'); INSERT INTO #Test2 VALUES (1, 'One'), (2, 'Two'), (3, 'Three');</code>
Pertanyaan INNER JOIN
:
<code class="language-sql">SELECT * FROM #Test1 t1 INNER JOIN #Test2 t2 ON t2.Name = t1.Name;</code>
Pertanyaan LEFT JOIN
:
<code class="language-sql">SELECT * FROM #Test1 t1 LEFT JOIN #Test2 t2 ON t2.Name = t1.Name;</code>
Dalam contoh minimum ini, dengan beberapa baris dan tiada indeks, LEFT JOIN
mungkin kelihatan lebih pantas. Walau bagaimanapun, jika syarat cantum menggunakan lajur ID
(kunci utama), INNER JOIN
akan menjadi lebih pantas disebabkan penggunaan indeks yang cekap. Ini menyerlahkan kepentingan pengindeksan yang betul dalam mengoptimumkan prestasi penyertaan tanpa mengira jenis penyertaan.
Atas ialah kandungan terperinci Mengapa JOIN KIRI Saya Kadangkala Lebih Cepat Daripada JOIN DALAM dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!