*Perbezaan prestasi antara COUNT() dan COUNT(1) dalam SQL Server: analisis mendalam**
Telah lama menjadi perdebatan tentang penggunaan COUNT() dan COUNT(1) dalam SQL Server. Walaupun matlamat kedua-dua pertanyaan adalah untuk mengira bilangan baris dalam jadual, sesetengah pembangun percaya bahawa COUNT(1) berprestasi lebih baik daripada COUNT().
Pemahaman mendalam tentang perbezaan antara keduanya
Perbezaan utama antaraCOUNT() dan COUNT(1) ialah ungkapan yang mereka kira. COUNT() Mengira bilangan baris dalam jadual, tidak kira sama ada mana-mana lajur tertentu mengandungi data. Sebaliknya, COUNT(1) mengira bilangan kejadian "1" literal dalam lajur yang ditentukan.
Analisis Prestasi
Menurut dokumentasi Microsoft dan ujian empirikal, tiada perbezaan prestasi yang ketara antara COUNT(*) dan COUNT(1) dalam SQL Server. Pengoptimum menyedari bahawa kedua-dua ungkapan ini menilai sama dan mengoptimumkan pertanyaan dengan sewajarnya.
Salah faham konsep tradisional
Tanggapan bahawa COUNT(1) berprestasi lebih baik daripada COUNT(*) mungkin berpunca daripada versi terdahulu SQL Server atau sistem pangkalan data lain yang terdapat perbezaan prestasi sebenar antara kedua-duanya. Walau bagaimanapun, dalam versi moden SQL Server, pengoptimuman ini sudah lapuk.
Contoh
Untuk membuktikan kesetaraan COUNT(*) dan COUNT(1), pertimbangkan pertanyaan berikut:
<code class="language-sql">SELECT COUNT(*) FROM dbo.table1;</code>
Pertanyaan ini akan mengembalikan hasil yang sama seperti pertanyaan berikut:
<code class="language-sql">SELECT COUNT(1) FROM dbo.table1;</code>
Kesimpulan
Walaupun COUNT(*) dan COUNT(1) boleh digunakan untuk mengira baris dalam SQL Server, tiada kelebihan prestasi dalam menggunakan satu daripada yang lain. Pembangun dinasihatkan untuk memilih ungkapan yang paling memenuhi keperluan khusus pertanyaan mereka.
Atas ialah kandungan terperinci Count(*) vs Count(1) dalam SQL Server: Adakah Seseorang Benar-benar Berprestasi Lebih Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!