Penjelasan terperinci tentang perbezaan prestasi antara INNER JOIN dan LEFT JOIN dalam SQL Server
Dalam SQL Server, pertimbangan prestasi selalunya menjadi kunci kepada keputusan pengoptimuman pertanyaan. Memilih antara INNER JOIN atau LEFT JOIN, terutamanya dalam pertanyaan yang melibatkan berbilang jadual, adalah soalan biasa. Walaupun orang sering berfikir bahawa LEFT JOIN sememangnya lebih pantas, ini tidak selalunya benar.
Mengapa LEFT JOIN biasanya tidak lebih pantas?
LEFT JOIN akan mendapatkan semula semua baris dalam jadual kiri, walaupun tiada baris yang sepadan dalam jadual kanan. Sebaliknya, INNER JOIN hanya mengembalikan baris yang padanan ditemui. Ini bermakna LEFT JOIN itu sendiri akan melakukan lebih banyak kerja dan menjana lebih banyak baris hasil, yang boleh mengakibatkan masa pelaksanaan yang lebih lama.
Pengecualian: Bilakah LEFT JOIN boleh menjadi lebih pantas?
Dalam kes yang jarang berlaku, LEFT JOIN mungkin lebih cepat daripada INNER JOIN kerana faktor-faktor tertentu adalah seperti berikut:
Contoh
Pertimbangkan contoh berikut:
<code class="language-sql">CREATE TABLE #Test1 (ID int NOT NULL PRIMARY KEY, Name varchar(50) NOT NULL) INSERT INTO #Test1 (ID, Name) VALUES (1, 'One'), (2, 'Two'), (3, 'Three'), (4, 'Four'), (5, 'Five') CREATE TABLE #Test2 (ID int NOT NULL PRIMARY KEY, Name varchar(50) NOT NULL) INSERT INTO #Test2 (ID, Name) VALUES (1, 'One'), (2, 'Two'), (3, 'Three'), (4, 'Four'), (5, 'Five') SELECT * FROM #Test1 t1 INNER JOIN #Test2 t2 ON t2.Name = t1.Name SELECT * FROM #Test1 t1 LEFT JOIN #Test2 t2 ON t2.Name = t1.Name DROP TABLE #Test1 DROP TABLE #Test2</code>
Apabila dilaksanakan pada jadual kecil ini, pertanyaan LEFT JOIN adalah lebih pantas sedikit kerana overhed padanan cincang melebihi kos saiz hasil tambahan. Walau bagaimanapun, pada jadual yang lebih besar dengan lebih daripada sepuluh baris, pertanyaan INNER JOIN adalah lebih pantas.
Kesimpulan
Dalam kebanyakan kes, INNER JOIN berprestasi lebih baik daripada LEFT JOIN dari segi kelajuan pelaksanaan. Pengecualian terhad kepada keadaan yang sangat khusus yang melibatkan jadual yang sangat kecil dan indeks yang tidak mencukupi. Oleh itu, adalah penting untuk memeriksa reka bentuk pertanyaan dan indeks dengan teliti untuk mengenal pasti kesesakan prestasi yang berpotensi, dan bukannya menggantikan PENYERTAAN DALAM dengan PENYERTAAN KIRI hanya atas sebab prestasi.
Atas ialah kandungan terperinci SERTAI DALAM lwn. SERTAI KIRI: Bilakah Satu Lebih Cepat Daripada Yang Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!