← Все вопросы
COUNT(*) или COUNT(column) — в чём разница при подсчёте строк?
15
Хочу посчитать количество заказов. Видел и COUNT(*), и COUNT(user_id). Это одно и то же или нет? И что с NULL?
3 ответа
24
✓ Принятый ответ — помог автору
Не одно и то же из-за NULL:
COUNT(*)— считает ВСЕ строки, включая те, где естьNULL.COUNT(column)— считает только строки, гдеcolumnНЕNULL.COUNT(DISTINCT column)— количество уникальных непустых значений.
SELECT
COUNT(*) AS всего_строк,
COUNT(phone) AS с_телефоном,
COUNT(DISTINCT city) AS уникальных_городов
FROM users;
Если просто «сколько строк» — бери COUNT(*), он самый быстрый и не зависит от NULL.
7
COUNT(*) для строк, COUNT(col) пропускает NULL.
-3
Всегда пиши COUNT(1), это быстрее чем COUNT(*).
Конструктивный Петух миф, в современных СУБД COUNT(*) и COUNT(1) одинаковы по плану · 10 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.