Rumah >pangkalan data >tutorial mysql >Adakah `SELECT 1` Menawarkan Keuntungan Prestasi berbanding `SELECT *` dalam Klausa SQL EXISTS?
Pengoptimuman subkueri dalam klausa EXISTS
Dalam pengaturcaraan SQL, operator EXISTS menyemak sama ada subkueri mengembalikan sebarang baris. Secara tradisinya, pembangun menggunakan sintaks SELECT * dalam klausa EXISTS mereka. Walau bagaimanapun, sesetengah orang mengesyorkan menggunakan SELECT 1 sebaliknya, mendakwa ia meningkatkan prestasi.
Jawapan:
Bertentangan dengan faedah yang dituntut, Microsoft dan standard SQL menyatakan bahawa tiada kesan prestasi daripada SELECT * dalam klausa EXISTS. SQL Server akan mengenali konteks dan mengembalikan NO DATA tanpa mengira lajur yang dinyatakan dalam senarai pilih.
Banding dan sahkan:
Untuk mengesahkan ini, pertimbangkan coretan kod berikut:
<code class="language-sql">IF EXISTS (SELECT 1/0 FROM someothertable WHERE a_valid_clause )</code>
Jika senarai pilihan bermakna, ia akan menyebabkan ralat bahagi dengan sifar. Walau bagaimanapun, ia berjaya dilaksanakan kerana EXISTS mengabaikan set hasil sebenar dan hanya menyemak kewujudan baris.
Kesimpulan:
Dalam SQL Server, tiada perbezaan praktikal antara menggunakan SELECT * atau SELECT 1 dalam klausa EXISTS. Kedua-dua kaedah berkesan untuk mengesahkan kehadiran baris dalam subkueri. Pembangun boleh memilih sintaks pilihan mereka berdasarkan keutamaan peribadi atau kebolehbacaan kod.
Atas ialah kandungan terperinci Adakah `SELECT 1` Menawarkan Keuntungan Prestasi berbanding `SELECT *` dalam Klausa SQL EXISTS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!