*SQL Server: Count() vs. Count(1) – Analisis Prestasi**
Ramai pengguna SQL tertanya-tanya tentang perbezaan prestasi antara COUNT(*)
dan COUNT(1)
. Kedua-dua fungsi mengira baris, tetapi adakah terdapat kesan prestasi sebenar?
Dalam SQL Server (khususnya, versi dari 2005 dan seterusnya), jawapannya adalah mudah: tiada perbezaan prestasi yang ketara wujud.
Dokumentasi Microsoft menjelaskan bahawa COUNT(*)
mengira semua baris dalam jadual (atau yang memenuhi syarat tertentu). Yang penting, COUNT(1)
—kerana '1' ialah ungkapan bukan nol—menghasilkan hasil yang sama.
Pengoptimum pertanyaan SQL Server mengiktiraf kesetaraan ini. Ia merawat kedua-dua fungsi secara sama, menghasilkan pelan pelaksanaan yang sama, operasi I/O dan akhirnya, prestasi.
Pertimbangkan contoh ini:
<code class="language-sql">SELECT COUNT(1) FROM dbo.tab800krows; SELECT COUNT(1), FKID FROM dbo.tab800krows GROUP BY FKID; SELECT COUNT(*) FROM dbo.tab800krows; SELECT COUNT(*), FKID FROM dbo.tab800krows GROUP BY FKID;</code>
Melaksanakan pertanyaan ini akan menghasilkan hasil yang sama, mengesahkan kesetaraan fungsi COUNT(*)
dan COUNT(1)
. Oleh itu, pilihan di antara mereka sebahagian besarnya adalah soal gaya pengekodan atau keutamaan peribadi; ia tidak akan memberi kesan kepada prestasi pertanyaan dalam SQL Server.
Atas ialah kandungan terperinci Count(*) vs Count(1) dalam SQL Server: Adakah Terdapat Perbezaan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!