Rumah >pangkalan data >tutorial mysql >SELECT 1 vs. SELECT * dalam Fasal EXISTS: Adakah ia Memberi Impak kepada Prestasi Pelayan SQL?
*PILIH 1 dan PILIH dalam klausa EXISTS: Analisis perbezaan prestasi SQL Server**
Dalam SQL Server, sentiasa ada perdebatan tentang sama ada hendak menggunakan SELECT 1 atau SELECT * apabila menggunakan subqueries dengan operator EXISTS. Sesetengah orang berpendapat SELECT 1 lebih cekap, tetapi adakah perbezaan prestasi sebenarnya ketara?
Kesimpulan:
Menurut dokumentasi Microsoft dan standard ANSI SQL, terdapat sedikit perbezaan praktikal antara menggunakan SELECT 1 atau SELECT * dalam klausa EXISTS. SQL Server dioptimumkan untuk kedua-dua bentuk dan mentafsirkannya sebagai setara.
Sebab:
Dalam klausa EXISTS, tujuan tunggal subkueri adalah untuk menentukan sama ada mana-mana baris memenuhi kriteria yang ditentukan. Keputusan senarai pemilihan dibuang oleh sistem. Oleh itu, sama ada anda menentukan SELECT 1 atau SELECT *, impak prestasi adalah tidak penting.
Contoh:
Pertimbangkan pertanyaan berikut:
<code class="language-sql">IF EXISTS (SELECT 1 FROM sometable WHERE a_valid_clause) BEGIN ... END</code>
Walaupun subkueri memilih literal 1, ia tidak cuba melakukan sebarang operasi matematik padanya, jadi kehadiran bahagi dengan sifar (1/0) tidak menyebabkan ralat.
Ringkasan:
Walaupun anda mungkin lebih suka menggunakan SELECT 1 untuk ketekalan atau kejelasan, berbuat demikian tidak memberikan sebarang faedah prestasi sebenar apabila menggunakan operator EXISTS dalam SQL Server.
Atas ialah kandungan terperinci SELECT 1 vs. SELECT * dalam Fasal EXISTS: Adakah ia Memberi Impak kepada Prestasi Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!