SQL & Databases Masterclass Course
Welcome to the ultimate postgresql tutorial for beginners 2026. Work through interactive sql practice problems with solutions, master our comprehensive sql window functions tutorial modules, and prepare for tough sql interview questions at Google and Amazon entirely in your browser. Claim your course completion XP and build production-ready database mastery today!
SQL Lesson 22: High-Speed Subqueries with EXISTS
Introduction & Core Concept
In high-performance database engineering, the EXISTS operator acts as an elite logical boolean validator. It tests for the existence of any matching rows returned by an inner correlated subquery.
If the subquery returns at least one row, the EXISTS condition immediately evaluates to TRUE. If zero rows match, it evaluates to FALSE.
SELECT name FROM users u
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);Why EXISTS is Dramatically Faster than IN
IN Evaluation (Slow): The query engine compiles the entire inner subquery first, compiles all matching values into a temporary list in memory, and scans against it. If the subquery returns millions of rows, memory spikes and performance crashes.EXISTS Evaluation (Short-Circuiting): The database engine uses lazy evaluation. The moment it finds the very first matching record inside the subquery, it immediately stops executing the subquery and returns TRUE. It doesn't scan the rest of the millions of rows!Why & Where We Use It
Real-World Example
ShopMart needs to isolate customers who have placed at least one 'Completed' order without downloading or joining their entire historical transaction history.
Best Practices: What to Do & What NOT to Do
SELECT 1 inside your EXISTS subqueries (e.g., WHERE EXISTS (SELECT 1 FROM ...)). Since EXISTS only checks whether a row exists, the actual column values are completely irrelevant. Returning a static 1 minimizes CPU overhead!IN when checking against subqueries that return NULL values, as NOT IN combined with nulls can silently fail and return zero rows! NOT EXISTS handles nulls perfectly.Syntax & Pro Tips
SELECT id FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);