Rumah >pangkalan data >tutorial mysql >EXISTS Subqueries: PILIH 1 atau PILIH * – Adakah Ia Penting untuk Prestasi?

EXISTS Subqueries: PILIH 1 atau PILIH * – Adakah Ia Penting untuk Prestasi?

Barbara Streisand
Barbara Streisandasal
2025-01-15 20:38:13323semak imbas

EXISTS Subqueries: SELECT 1 or SELECT * – Does it Matter for Performance?

*WUJUD pertanyaan: PILIH 1 lwn. PILIH **

Apabila menggunakan subquery EXISTS dalam SQL, soalan biasa ialah: Patutkah SELECT 1 atau SELECT * digunakan dalam subquery?

*PILIH lwn. PILIH 1**

Pada masa lalu, adalah dianggap bahawa SELECT 1 adalah lebih cekap daripada SELECT * dalam subkueri EXISTS. Walau bagaimanapun, ini tidak berlaku. SQL Server mengoptimumkan semakan EXISTS untuk mengembalikan NO DATA kepada sistem tanpa mengira lajur yang dinyatakan dalam senarai SELECT subquery.

Perspektif Microsoft

Menurut Microsoft: "Senarai SELECT subquery yang diperkenalkan oleh EXISTS hampir selalu mengandungi asterisk (*). Tiada sebab untuk menyenaraikan nama lajur, kerana anda hanya menguji sama ada terdapat baris yang memenuhi syarat yang ditetapkan dalam subkueri ”

Demo

Untuk mengesahkan ini, pertimbangkan pertanyaan berikut:

<code class="language-sql">SELECT whatever
FROM yourtable
WHERE EXISTS( SELECT 1/0
FROM someothertable 
WHERE a_valid_clause )</code>

Jika SELECT * benar-benar melakukan sebarang operasi pada lajur yang dipilih, pertanyaan akan menghasilkan ralat bahagi dengan sifar. Walau bagaimanapun, ia tidak, menunjukkan bahawa senarai SELECT subquery diabaikan dan hanya digunakan untuk menentukan kewujudan baris.

SQL Standard

Piawaian SQL juga menyokong pandangan ini: "Jika '' hanya terkandung dalam yang terkandung secara langsung dalam , maka '' adalah bersamaan dengan A untuk mana-mana

Kesimpulan

Ringkasnya, tiada perbezaan prestasi menggunakan SELECT 1 atau SELECT * dalam subkueri EXISTS. Oleh itu, adalah disyorkan pilihan yang lebih mudah dibaca atau konsisten dengan gaya pengekodan anda.

Atas ialah kandungan terperinci EXISTS Subqueries: PILIH 1 atau PILIH * – Adakah Ia Penting untuk Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn