SQL-совет 💡
Если в запросе используется
❌ Часто медленно:
✅ Обычно быстрее и безопаснее:
Почему это важно:
-
-
- Лучше масштабируется на больших данных
- Меньше сюрпризов с NULL
Особенно критично в PostgreSQL, MySQL и Oracle на больших таблицах.
Если в запросе используется
IN (subquery) - почти всегда выгоднее заменить его на EXISTS.❌ Часто медленно:
SELECT *
FROM orders o
WHERE o.user_id IN (
SELECT u.id FROM users u WHERE u.country = 'US'
);
✅ Обычно быстрее и безопаснее:
SELECT *
FROM orders o
WHERE EXISTS (
SELECT 1
FROM users u
WHERE u.id = o.user_id
AND u.country = 'US'
);
Почему это важно:
-
IN может материализовать подзапрос целиком -
EXISTS работает как semi-join и рано останавливается - Лучше масштабируется на больших данных
- Меньше сюрпризов с NULL
Особенно критично в PostgreSQL, MySQL и Oracle на больших таблицах.
👍5❤3🔥2🤔1