В последнее время числовая функция используется очень часто, и когда число считается относительно большим, выясняется, что count(*) занимает больше времени, а count(1) — меньше.
Некоторые документы содержат следующие заявления:
Если в вашей таблице данных нет первичного ключа, то count(1) работает быстрее, чем count(*). Если есть первичный ключ, то первичный ключ (совместный первичный ключ) также быстрее count(*). Если в вашей таблице только одно поле, то count(*) — самый быстрый count(*) count(1) Сравните оба варианта. Главное — считать поля данных, соответствующие (1). Если count(1) — полииндекс, id, то он должен быть count(1) быстрее. Но разница очень мала. Из-за count(*), поле автоматически оптимизируется для указания на . Так что не нужно считать(?), использовать count(*), SQL поможет вам завершить оптимизацию
Детали подсчета: count(*) вернёт общее количество всех строк в таблице, включая строки с null-значением,Однако счёт (название столбца) возвращает общее количество всех строк в таблице, кроме нулевой(Также считаются столбцы с значениями по умолчанию). Отдельное имя столбца, результат будет результатом после удаления нулевого значения и дублирующих данных
Раньше я не знал, что в блоге говорилось, что всем рекомендуют использовать count(0) и что эффективность запросов относительно высокая и так далее
Сегодня выяснилось, что использование count(0) — это заблуждение!!
count(0) Первый столбец статистики не пуст
Не используйте число (название столбца) или count(константа) вместо count(*),
count(*) — это синтаксис для стандартного количества строк, определённых SQL92, который не имеет отношения к базе данных, NULL и не NULL.
Примечание: count(*) считает строки с NULL-значением, тогда как count(название столбца) не учитывает строки с NULL-значением.
Поэтому в будущем, когда вы будете анализировать всю статистику и не исключаете пустые данные, лучше честно использовать количество (*)!!
|