Rumah > pangkalan data > tutorial mysql > Count(*) vs Count(1) dalam SQL Server: Adakah Seseorang Benar-benar Berprestasi Lebih Baik?

Count(*) vs Count(1) dalam SQL Server: Adakah Seseorang Benar-benar Berprestasi Lebih Baik?

Linda Hamilton
Lepaskan: 2025-01-23 18:44:13
asal
671 orang telah melayarinya

Count(*) vs. Count(1) in SQL Server: Does One Really Perform Better?

*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 antara

COUNT() 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>
Salin selepas log masuk

Pertanyaan ini akan mengembalikan hasil yang sama seperti pertanyaan berikut:

<code class="language-sql">SELECT COUNT(1) FROM dbo.table1;</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan