Недавно я задал этот вопрос в интервью. Я попробовал это в mySQL и получил те же результаты (окончательные результаты). Все указали количество строк в этой конкретной таблице. Может ли кто-нибудь объяснить основное различие между ними.В чем разница между count (0), count (1) ... и count (*) в mySQL/SQL?
ответ
Ничего особенного, если не указать поле в таблице или выражение в скобках вместо постоянных значений или *
Позвольте мне дать вам подробный ответ. Граф даст вам нулевой номер записи данного поля. Скажем, у вас есть таблица с именем
select 1 from A
select 0 from A
select * from A
все будет возвращать одинаковое количество записей, то есть количество строк в таблице А. Тем не менее выход отличается. Если в таблице записано 3 записи. С именами X и Y в качестве полей
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)
Итак, все три запроса возвращают одинаковое число. Если вы не используете
select count(Y) from A
, поскольку существует только один непустое значение вы получите 1 в качестве выхода
COUNT(*)
подсчитывает количество строк, в то время как COUNT(expression)
будет считать ненулевые значения в выражении и COUNT(column)
будет подсчитайте все ненулевые значения в столбце.
Поскольку оба значения 0 и 1 являются ненулевыми значениями, COUNT(0)=COUNT(1)
, и оба они будут эквивалентны количеству строк COUNT(*)
. Это другое понятие, но результат будет таким же.
Спасибо fthiella. @brhneser имеет много подробного ответа для новичка, подобного мне. – Dhruv
Да, вы правы, но я думаю, что 'count (*)' займет больше времени, чем 'count (1)', не так ли? Если да, то использование 'count (1)' будет лучше для производительности. :) – Yubaraj
@Yubaraj count (1) имел лучшие показатели, чем count (*), по крайней мере, на некоторых dbms, но в настоящее время оптимизатор способен подсчитать счетчик (*), эквивалентный счету (1) – fthiella
Теперь - все они должны выполняться одинаково.
В прошлые дни, хотя COUNT (1) (или независимо от того, что вы выбрали), иногда рекомендуется использовать для COUNT (*), потому что плохой код оптимизации запроса заставит базу данных получить все данные поля до запуска подсчета , Таким образом, COUNT (1) был быстрее, но теперь это не имеет значения.
- 1. В чем разница между count (*) и count (1) в sql?
- 2. В SQL, в чем разница между count (*) и count ('x')?
- 3. разница между COUNT (*) и COUNT (имя_столбца)
- 4. В чем разница между len() и count()?
- 5. Разница между: d [count] и d [count]
- 6. Разница между count() и find(). Count() в MongoDB
- 7. Есть ли разница между `COUNT (*)` и `COUNT (date_created)` в MySQL
- 8. Разница в производительности между Select count (ID) и Select count (*)
- 9. Diffence между "SELECT COUNT (NULL)" и "SELECT COUNT (1)"
- 10. В чем разница между «count» и другой переменной say «i»?
- 11. В чем разница между len() и count() в python?
- 12. В чем разница между count и select ('DISTINCT COUNT (xxx)') в ActiveRecord?
- 13. IPad iOS4 count count возвращает 0
- 14. Разница между NOT EXISTS и COUNT (*)
- 15. Что делает «count = (count && count.length || 0)»; делать?
- 16. В чем разница между действиями collect и count?
- 17. Где(). Count() vs. Count()
- 18. Javascript Count Count
- 19. COUNT (id) против COUNT (*) в MySQL
- 20. Является ли COUNT (fld) быстрее, чем COUNT (*)?
- 21. COUNT (1) в DB2
- 22. В чем разница между cts: count, cts: frequency, fn: count в MarkLogic?
- 23. Return 0 on count()
- 24. В Perl, какая разница между "if defined $ count" и "if $ count"?
- 25. Updatable ResultSet count count
- 26. count (*) и count (column_name), что такое diff?
- 27. SQL COUNT of COUNT
- 28. Разница между IEnumerable Count() и длиной
- 29. SQL-запрос много-ко-многим отношениям count count count count 0 для тех, у кого нет
- 30. ВСТАВИТЬ COUNT() = 0
Имейте значение «null» в столбце. Затем сделайте подсчет столбца. Посмотрите, как подсчеты различаются. Выбор «0» или «1» - это просто выбор константы для каждой строки, при этом не будет задействован «нуль». – Glenn
Возможный дубликат [В SQL, какая разница между count (column) и count (\ *)?] (Http://stackoverflow.com/questions/59294/in-sql-whats-the-difference-between-countcolumn -and-count) – newtover