Согласуйте, должны ли сохраняться строки без совпадений в JOIN
Зачем
Зачем это нужно
Сравните COUNT(*) и подсчёт непустого ключа связанной таблицы
Разберите присланный EXPLAIN отдельно от проверки правильности результата
Вопросы
Частые вопросы
Как попросить запрос PostgreSQL с нулевыми группами?
Для PostgreSQL есть users(id) со строками 1,2 и orders(id,user_id,status) со строкой (10,1,'paid'). Нужны все пользователи и число оплаченных заказов, включая 0. Покажи запрос с LEFT JOIN, объясни место фильтра status и отличие COUNT(*) от COUNT(orders.id). Дай ожидаемые строки и порядок проверки на тестовой базе. Ничего не выполняй.
Что подготовить для разбора PostgreSQL-запроса?
Укажите версию PostgreSQL, определения таблиц и индексов, SQL и обезличенные строки. Удалите секреты из строк подключения и планов. Сначала проверьте ожидаемый результат, затем передайте план с тестовой базы для обсуждения выполнения.
Какие строки ожидаются для двух пользователей?
После локального выполнения запрос должен вернуть пользователя 1 со счётом 1 и пользователя 2 со счётом 0. Добавьте неоплаченный заказ пользователю 2: его счёт оплаченных заказов должен остаться 0. Порядок задайте явно, если сравниваете последовательность строк.
Безопасно ли просить EXPLAIN ANALYZE для любого SQL?
ANALYZE действительно выполняет запрос и может вызвать нагрузку или изменение данных. Чат не запускает эту команду за вас. Подбирайте способ получения плана под тип запроса и используйте контролируемую тестовую среду.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.