SQL Practice Logo

SQLPractice Online

Subqueries vs JOINs: Performance & Readability: Mistakes

Module: Joins & Relationships

-- Using IN when EXISTS would be better

SELECT customer_name FROM customers

WHERE customer_id IN (

SELECT customer_id FROM orders WHERE total_amount > 1000

);

-- Use EXISTS for better performance

SELECT customer_name FROM customers c

WHERE EXISTS (

SELECT 1 FROM orders o

WHERE o.customer_id = c.customer_id AND o.total_amount > 1000

);

EXISTS stops at first match. IN must build complete result set. EXISTS handles NULLs better.

IN can be slower than EXISTS for large datasets