Introduction
Joining tables lets us combine related information. The order we join tables can change how fast the database finds the answer.
Jump into concepts and practice - no test required
SELECT columns FROM table1 JOIN table2 ON table1.key = table2.key;
SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id;
SELECT * FROM customers JOIN orders ON customers.id = orders.customer_id;
SELECT * FROM products JOIN sales ON products.id = sales.product_id;
CREATE TABLE customers (id INT, name VARCHAR(20)); CREATE TABLE orders (id INT, customer_id INT, amount INT); INSERT INTO customers VALUES (1, 'Alice'), (2, 'Bob'); INSERT INTO orders VALUES (101, 1, 50), (102, 2, 100), (103, 1, 75); -- Join orders to customers SELECT customers.name, orders.amount FROM orders JOIN customers ON orders.customer_id = customers.id ORDER BY customers.name;
employees and departments on department_id?orders (1000 rows) and customers (10 rows), which join order is likely faster?Query 1: SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id;Query 2: SELECT * FROM customers JOIN orders ON customers.id = orders.customer_id;customers table (10 rows), likely reducing intermediate data size and speeding up join.SELECT * FROM A JOIN B ON A.id = B.a_id JOIN C ON B.id = C.b_id;SELECT * FROM C JOIN B ON B.id = C.b_id JOIN A ON A.id = B.a_id; changes join order to start with C, possibly smaller or more filtered, improving speed. Replacing ON with WHERE breaks join syntax. Removing a join loses data. CROSS JOIN explodes row count without filters.sales (1 million rows), products (1000 rows), and categories (50 rows). To optimize a query joining all three, which join order is best for performance?Options: