No MySQL, considere duas tabelas, T1 e T2. As duas tabelas possuem uma coluna A definida como chave primária (primary key). T1 tem 1000 linhas, T2 tem 400 linhas. Com essas tabelas, foi executado o comando SQL a seguir: SELECT T1.A, T2.A FROM T1 CROSS JOIN T2 Excetuada a linha de títulos, assinale a estimativa mais precisa sobre o número de linhas retornadas no resultado.
- A)400.000 exatamente.
Correta, porque CROSS JOIN gera o produto cartesiano: 1000 x 400 = 400.000 linhas.
- B)1.400 exatamente.
Errada, pois 1.400 seria uma soma, mas o CROSS JOIN não soma linhas, ele multiplica combinações.
- C)1.000 exatamente.
Errada, porque 1.000 ignora completamente as 400 linhas de T2.
- D)Entre 0 e 400, dependendo dos valores presentes nas colunas citadas.
Errada, já que o resultado de CROSS JOIN não depende dos valores de A; depende apenas da quantidade de linhas.
- E)Entre 800 e 2.000, dependendo dos valores presentes nas colunas citadas.
Errada, porque o total não fica em uma faixa variável: é exatamente o produto entre as cardinalidades das tabelas.
Gabarito: A
O comando CROSS JOIN faz o produto cartesiano entre as tabelas: cada linha de T1 é combinada com cada linha de T2. Então, se T1 tem 1000 linhas e T2 tem 400, o resultado terá 1000 x 400 = 400.000 linhas. Aqui não importa o conteúdo das colunas A, nem o fato de serem chave primária, porque o CROSS JOIN não faz comparação nem elimina duplicidades. Ele simplesmente empilha todas as combinações possíveis, como quem junta cada peça de um conjunto com cada peça do outro. Por isso o gabarito A está correto: o número é exato, não uma estimativa, e depende apenas da quantidade de linhas nas tabelas.