На первый взгляд
NULL — это просто “нет значения”. Но в реальности — это тихий саботаж:🔸
NULL != NULL. Да-да, сравнение NULL = NULL даст false или unknown. Это ломает привычную логику и может убить фильтры.🔸 Агрегации ведут себя странно.
COUNT(column) не считает NULL'ы. AVG, SUM — тоже их игнорируют. Итог: неверная статистика.🔸 Индексы и
WHERE column IS NULL. Не все СУБД эффективно используют индексы при таких запросах. Можно словить тормоза.🔸
NOT IN + NULL = 💥. Запрос WHERE id NOT IN (subquery) может вернуть пустой результат, если в подзапросе есть хотя бы один NULL.💡 Как избежать проблем:
1. Всегда осознанно работай с
NULL — используй IS NULL и IS NOT NULL, не = и !=.2. По возможности избегай
NULL в колонках, где это не нужно. Лучше использовать значения по умолчанию.3. Добавляй проверки в коде:
COALESCE, IFNULL, NVL и аналоги.4. Понимай, как твоя СУБД работает с
NULL в индексах и фильтрах.🎯 Вывод:
NULL — не пустота, а “неизвестность”. Обращайся с ним осторожно, иначе баги будут неявными и неприятными.Сохрани, чтобы не отловить баг на проде 🐛
📲 Мы в MAX
#db
👉 @database_info
