Eventuali duplicati:
Count(*) vs Count(1)SQL Best Practice: count (1) o il conteggio (*)
Ricordo anecdotally stato detto:
mai usare count (*) quando il conteggio (1) farà
Recentemente ho passato questo consiglio a un altro sviluppatore, e sono stato sfidato a dimostrare che questo era vero. La mia argomentazione era quella che mi è stata raccontata insieme a quando mi è stato dato il consiglio: che il database avrebbe restituito solo la prima colonna, che sarebbe stata quindi conteggiata. Il controargomento era che il database non valutava nulla tra parentesi.
Da alcuni test (non scientifici) su tavolini, sembra non esserci alcuna differenza. Al momento non ho accesso a tabelle di grandi dimensioni su cui sperimentare.
Mi è stato dato questo consiglio mentre stavo usando Sybase e le tabelle avevano centinaia di milioni di righe. Ora sto lavorando con Oracle e molti meno dati.
Quindi credo che, in sintesi, le mie due domande sono:
- che è più veloce, count (1) o count (*)?
- Questo varrebbe in diversi fornitori di database?
1. SQL ANSI definisce 'COUNT (*)' deve essere ottimizzato 2. Questo vale per la maggior parte degli RDBMS. Qualsiasi altra cosa si applica solo alle versioni precedenti * dove indicato * altrimenti supponiamo che COUNT (*) sia ottimizzato. – gbn