Recentemente mi è stata posta questa domanda in un'intervista. Ho provato questo in mySQL e ho ottenuto gli stessi risultati (risultati finali). Tutti hanno dato il numero di righe in quella particolare tabella. Qualcuno può spiegare la principale differenza tra loro.Qual è la differenza tra count (0), count (1) .. e count (*) in mySQL/SQL?
risposta
Nulla di veramente, a meno che non si specifica un campo in una tabella o un'espressione all'interno parantheses invece di valori costanti o *
mi permetta di dare una risposta dettagliata. Count ti darà il numero di record non nullo del campo dato. Diciamo che avete una tabella denominata Un
select 1 from A
select 0 from A
select * from A
saranno tutti tornare stesso numero di record, che è il numero di righe nella tabella A. Ancora l'output è diverso. Se ci sono 3 record nella tabella. Con X e Y come nomi di campo
select 1 from A will give you
1
1
1
select 0 from A will give you
0
0
0
select * from A will give you (assume two columns X and Y is in the table)
X Y
-- --
value1 value1
value2 (null)
value3 (null)
Quindi, tutte e tre le query restituiscono lo stesso numero. Meno di utilizzare
select count(Y) from A
poiché c'è solo un valore non nullo si ottiene 1 come uscita
COUNT(*)
conta il numero di righe, mentre COUNT(expression)
conterà valori non nulli nell'espressione e COUNT(column)
sarà conta tutti i valori non nulli nella colonna.
Poiché entrambi 0 e 1 sono valori non nulli, COUNT(0)=COUNT(1)
e entrambi saranno equivalenti al numero di righe COUNT(*)
. È un concetto diverso, ma il risultato sarà lo stesso.
Grazie a fthiella. @brhneser ha una risposta molto dettagliata per un principiante come me. – Dhruv
Sì, hai ragione, ma penso che 'count (*)' impiegherà più tempo di 'count (1)', non è vero? Se sì, allora usare 'count (1)' sarebbe meglio per il modo di performance. :) – Yubaraj
@Yubaraj count (1) utilizzato per avere prestazioni migliori del conteggio (*), almeno su alcuni dbms, ma al giorno d'oggi l'ottimizzatore è in grado di fare il conteggio (*) equivalente al conteggio (1) – fthiella
Ora - dovrebbero tutti eseguire identicamente.
In passato, tuttavia, COUNT (1) (o qualsiasi altra costante che si scegliesse) a volte veniva raccomandato su COUNT (*) perché uno scarso codice di ottimizzazione delle query avrebbe consentito al database di recuperare tutti i dati del campo prima dell'esecuzione del conteggio . COUNT (1) era quindi più veloce, ma non dovrebbe importare ora.
- 1. Count (*) vs Count (1)
- 2. In Perl, qual è la differenza tra "if defined $ count" e "if $ count"?
- 3. Differenza tra count() e find(). Count() in MongoDB
- 4. COUNT (id) vs. COUNT (*) in MySQL
- 5. Come eseguire COUNT() o COUNT (*)
- 6. Differenza tra IEnumerable Count() e Length
- 7. BigQuery COUNT (valore DISTINCT) vs COUNT (valore)
- 8. WMPLib: player.mediaCollection.getAll(). Count è sempre 0
- 9. limite vs esiste vs count (*) vs count (id) in MySQL
- 10. Qual è la differenza tra count e total_count su un facet range elasticsearch?
- 11. Come includere "zero"/"0" in COUNT aggregato?
- 12. "SELECT COUNT (column)" più veloce/più lento di "SELECT COUNT (*)"?
- 13. MySQL COUNT() e null
- 14. Calcoli con COUNT()
- 15. Utilizzando COUNT in group_concat
- 16. Ottimizzazione Pagerfanta e Doctrine2 COUNT
- 17. Linq metodo Count e prestazioni
- 18. casi Count della classe
- 19. SQL - Query - max (count())
- 20. Parametro Count Mismatch
- 21. Impossibile dedurre la funzione COUNT
- 22. COUNT DISTINCT con CONDIZIONI
- 23. Qual è la performance di `count` su un set Clojure?
- 24. Come funziona la proprietà Count in PowerShell?
- 25. Seleziona Count Distinct
- 26. sql - left join - count
- 27. Rails SQL COUNT N + 1 inefficienza
- 28. COUNT MySQL con LIMIT
- 29. NSString conserva Count
- 30. SQL Server Count è lento
Hanno un valore 'nullo' in una colonna. Quindi fai un conteggio sulla colonna. Guarda come differiscono i conti. Selezionando '0' o '1' è solo selezionando una costante per ogni riga, non sarà coinvolto' nullo'. – Glenn
possibile duplicato di [In SQL, qual è la differenza tra count (column) e count (\ *)?] (Http://stackoverflow.com/questions/59294/in-sql-whats-the-difference- between betweencountcolumn -e-count) – newtover