CROSS JOIN in MySQL - Time & Space Complexity
When we use a CROSS JOIN in SQL, we combine every row from one table with every row from another table.
We want to understand how the work grows as the tables get bigger.
Analyze the time complexity of the following code snippet.
SELECT *
FROM employees
CROSS JOIN departments;
This query pairs each employee with every department, creating all possible combinations.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Combining each row from the first table with each row from the second table.
- How many times: For every employee, the database pairs with every department.
As the number of employees and departments grow, the total pairs grow much faster.
| Input Size (employees x departments) | Approx. Operations |
|---|---|
| 10 x 5 | 50 |
| 100 x 20 | 2,000 |
| 1,000 x 100 | 100,000 |
Pattern observation: The total work grows by multiplying the sizes of both tables.
Time Complexity: O(n x m)
This means the work grows by multiplying the number of rows in the first table (n) by the number of rows in the second table (m).
[X] Wrong: "The CROSS JOIN only adds a small amount of work, like adding rows together."
[OK] Correct: Actually, it multiplies the rows, so the work grows much faster than just adding.
Understanding how CROSS JOIN scales helps you explain query costs clearly and shows you know how big data affects performance.
"What if we added a WHERE clause to filter rows after the CROSS JOIN? How would the time complexity change?"
Practice
CROSS JOIN do in MySQL?Solution
Step 1: Understand the definition of CROSS JOIN
A CROSS JOIN returns the Cartesian product of two tables, pairing each row of the first table with every row of the second table.Step 2: Compare with other join types
Other joins like INNER JOIN or LEFT JOIN use matching conditions, but CROSS JOIN does not use any condition and pairs all rows.Final Answer:
Pairs every row from the first table with every row from the second table. -> Option DQuick Check:
CROSS JOIN = all combinations [OK]
- Confusing CROSS JOIN with INNER JOIN
- Thinking CROSS JOIN filters rows
- Assuming CROSS JOIN requires ON condition
Solution
Step 1: Identify the CROSS JOIN syntax
The correct syntax for CROSS JOIN is: SELECT * FROM table1 CROSS JOIN table2;Step 2: Differentiate from other join syntaxes
Other options use INNER JOIN or LEFT JOIN with conditions, which are not CROSS JOIN syntax.Final Answer:
SELECT * FROM table1 CROSS JOIN table2; -> Option AQuick Check:
Use CROSS JOIN keyword for Cartesian product [OK]
- Using ON clause with CROSS JOIN
- Confusing CROSS JOIN with INNER JOIN syntax
- Using WHERE instead of ON for joins
Table A: id1
2
Table B: color'Red'
'Blue'
What is the result of
SELECT * FROM A CROSS JOIN B;?Solution
Step 1: Understand CROSS JOIN output
CROSS JOIN pairs every row from Table A with every row from Table B, creating all combinations.Step 2: Calculate combinations
Table A has 2 rows, Table B has 2 rows, so total rows = 2 * 2 = 4. The pairs are (1, 'Red'), (1, 'Blue'), (2, 'Red'), (2, 'Blue').Final Answer:
Four rows: (1, 'Red'), (1, 'Blue'), (2, 'Red'), (2, 'Blue') -> Option AQuick Check:
Rows = 2 * 2 = 4 [OK]
- Assuming CROSS JOIN filters rows
- Counting only matching rows
- Ignoring all combinations
SELECT * FROM employees CROSS JOIN departments ON employees.id = departments.id;What is the error in this query?
Solution
Step 1: Check CROSS JOIN syntax rules
CROSS JOIN does not accept an ON clause because it returns all combinations without filtering.Step 2: Identify the error
Using ON with CROSS JOIN causes a syntax error in MySQL.Final Answer:
CROSS JOIN cannot have an ON clause; it causes a syntax error. -> Option CQuick Check:
ON clause invalid with CROSS JOIN [OK]
- Adding ON clause to CROSS JOIN
- Confusing CROSS JOIN with INNER JOIN
- Expecting filtered results from CROSS JOIN
Products (product_id, name) with 3 rows,Colors (color_id, color_name) with 4 rows.You want to generate a list of all possible product-color combinations.
Which query correctly achieves this?
Solution
Step 1: Understand the goal
We want all possible combinations of products and colors, which means pairing every product with every color.Step 2: Choose the correct join type
CROSS JOIN produces the Cartesian product, giving all combinations. INNER JOIN or LEFT JOIN with conditions only return matching rows, which is not desired here.Final Answer:
SELECT product_id, color_name FROM Products CROSS JOIN Colors; -> Option BQuick Check:
Use CROSS JOIN for all combinations [OK]
- Using INNER JOIN expecting all combinations
- Adding ON condition that filters rows
- Using WHERE instead of CROSS JOIN
Ready to prove it?
Pass the test and this pattern moves unknown
