Rumah >pangkalan data >tutorial mysql >EXISTS Subqueries: SELECT * atau SELECT 1 – Manakah yang Lebih Boleh Dibaca?

EXISTS Subqueries: SELECT * atau SELECT 1 – Manakah yang Lebih Boleh Dibaca?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 16:04:12986semak imbas

EXISTS Subqueries: SELECT * or SELECT 1 – Which is More Readable?

Kebolehbacaan Subkueri EXISTS

Apabila menggunakan subkueri EXISTS, terdapat dua pilihan utama:

SELECT foo FROM bar WHERE EXISTS (SELECT * FROM baz WHERE baz.id = bar.id);
SELECT foo FROM bar WHERE EXISTS (SELECT 1 FROM baz WHERE baz.id = bar.id);

Daripada perspektif prestasi, kedua-duanya adalah setara. Walau bagaimanapun, persoalan timbul tentang kebolehbacaan.

Manual dan Penggunaan Biasa

Seperti penyelidikan yang dijalankan ke atas pelbagai manual RDBMS dan carian dalam talian, nampaknya terdapat perbezaan:

  • Microsoft SQL, Oracle dan MySQL memilih SELECT * dalam contoh.
  • PostgreSQL lebih suka SELECT 1.
  • SQLite tidak memberikan sebarang contoh yang jelas.

Hasil carian Stack Overflow menunjukkan kelaziman SELECT * yang lebih tinggi sedikit. kod.

Intuitif Pendekatan

Persoalannya menimbulkan sama ada SELECT * lebih intuitif. Walau bagaimanapun, jawapannya menunjukkan bahawa ia bukanlah pilihan yang paling intuitif. Sebaliknya, PILIH 1 disyorkan kerana:

  • Ia menyatakan secara eksplisit syarat kewujudan.
  • Ia sejajar dengan piawaian ANSI, yang menyatakan bahawa baris khusus yang dikembalikan oleh subkueri adalah tidak relevan untuk EXISTS.
  • Ia menafikan mitos bahawa PILIH 1 ialah jalan pintas untuk kewujudan menyemak.

Kesimpulan

Walaupun tiada konsensus yang jelas, SELECT 1 dalam subkueri EXISTS dikatakan lebih intuitif. Ia menekankan aspek kewujudan, selaras dengan piawaian, dan menghilangkan salah tanggapan. Akhirnya, keutamaan kebolehbacaan mungkin berbeza-beza bergantung pada pemahaman dan gaya pembangun.

Atas ialah kandungan terperinci EXISTS Subqueries: SELECT * atau SELECT 1 – Manakah yang Lebih Boleh Dibaca?. 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