Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Hitung(*) vs Hitung(1) - SQL Server

Tidak ada perbedaan.

Alasan:

Buku online mengatakan "COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } ) "

"1" adalah ekspresi non-null:jadi sama dengan COUNT(*) .Pengoptimal mengenalinya apa adanya:sepele.

Sama seperti EXISTS (SELECT * ... atau EXISTS (SELECT 1 ...

Contoh:

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

IO yang sama, rencana yang sama, berhasil

Sunting, Agustus 2011

Pertanyaan serupa di DBA.SE.

Sunting, Des 2011

COUNT(*) disebutkan secara khusus dalam ANSI-92 (cari "Scalar expressions 125 ")

Kasus:

a) Jika COUNT(*) ditentukan, maka hasilnya adalah kardinalitas T.

Artinya, standar ANSI mengenalinya sebagai pendarahan yang jelas apa yang Anda maksud. COUNT(1) telah dioptimalkan oleh vendor RDBMS karena dari takhayul ini. Kalau tidak, itu akan dievaluasi sesuai ANSI

b) Jika tidak, misalkan TX menjadi tabel kolom tunggal yang merupakan hasil penerapan ke setiap baris Tand yang menghilangkan nilai nol. Jika satu atau lebih nilai null dihilangkan, maka kondisi penyelesaian dinaikkan:warning-



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan sangat lambat dalam kode tetapi cepat dalam SSMS

  2. Mengoptimalkan TempDB:Menghindari Kemacetan dan Masalah Kinerja

  3. Apa yang terjadi jika Anda tidak melakukan transaksi ke database (misalnya, SQL Server)?

  4. Kesalahan SQL Server 109:Ada lebih banyak kolom dalam pernyataan INSERT daripada nilai yang ditentukan dalam klausa VALUES

  5. Waktu Pengumpulan Alarm Awan Spotlight