1. What is a CROSS JOIN?
A CROSS JOIN returns the Cartesian product of two tables, meaning it returns all possible combinations of rows from both tables.
Example:
Consider the following two tables:

If we perform a CROSS JOIN between these tables, the result will be:

Each product is combined with each color, generating all possible pairings.
2. Explicit CROSS JOIN
An explicit CROSS JOIN uses the CROSS JOIN keyword to join two tables without specifying a condition.
Example:
SELECT p.product_name, c.color_name FROM products p CROSS JOIN colors c;
- Clearly states that a CROSS JOIN is being used.
- More readable and prevents accidental Cartesian products.
3. Implicit CROSS JOIN
An implicit CROSS JOIN occurs when multiple tables are listed in the FROM clause without a JOIN condition.
Example:
SELECT p.product_name, c.color_name FROM products p, colors c;
Risk: If a WHERE condition is missing, it may unintentionally generate a Cartesian product when not intended.
4. When to Use CROSS JOIN?
CROSS JOIN is useful when:
- Generating all possible combinations of values from two tables.
- Creating a dataset for testing or reporting.
- Applying business logic that requires combining each row of one table with another.
However, avoid using CROSS JOIN with large datasets unless necessary, as it can produce a massive number of rows.
5. Performance Considerations
Since CROSS JOIN generates a Cartesian product, the resulting number of rows is (Rows in Table A) × (Rows in Table B). Be cautious when using it on large tables as it can significantly impact performance.