LEFT OUTER JOIN vs. NOT WUJUD: Pertimbangan Prestasi
Apabila membandingkan data antara dua jadual, memilih elemen yang wujud dalam satu tetapi bukan lain boleh dicapai melalui sama ada LEFT OUTER JOIN atau subquery NOT EXISTS. Walaupun sesetengah mungkin membuat spekulasi bahawa JOIN yang mematuhi ANSI, seperti LEFT OUTER JOIN, menunjukkan prestasi yang lebih baik pada SQL Server, prestasi sebenar bergantung pada pelbagai faktor.
Secara amnya, jika medan yang terlibat mempunyai indeks yang sesuai dan anda menjangkakan akan menapis keluar sebahagian besar data, NOT EXISTS cenderung menawarkan prestasi yang lebih baik. Ini kerana NOT EXISTS, seperti EXISTS, memanfaatkan litar pintas: sebaik sahaja perlawanan ditemui untuk rekod, sama ada disertakan atau dikecualikan dan pengoptimum meneruskan ke rekod seterusnya.
Sebaliknya, LEFT JOIN mendapatkan semula semua rekod tanpa mengira sama ada ia sepadan, kemudian menapis yang tidak sepadan. Ini boleh menjadi intensif sumber jika jadual adalah besar atau berbilang kriteria gabungan ditentukan.
Oleh itu, NOT WUJUD dan WUJUD biasanya diutamakan apabila boleh. Khusus untuk SQL Server, operator IN dan NOT IN, yang secara semantik bersamaan dengan NOT EXISTS, mungkin lebih mudah untuk menulis dan menyediakan litar pintas yang terjamin.
Atas ialah kandungan terperinci LEFT OUTER JOIN vs. NOT EXISTS: Mana yang Berprestasi Lebih Baik dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!