Oi pessoal, se estou querendo fazer uma pesquisa para obter UMA tupla contendo a placa do carro e o nome do dono por exemplo. Devo pesquisar em uma tabela de cada vez ou faço o join?
(uma tabela por vez)
SELECT m.nome FROM motorista m WHERE m.cpf = ?;
SELECT v.placa FROM veiculo v WHERE v.cpf_dono = ?
(com join)
SELECT m.nome, v.placa FROM motorista m INNER JOIN veiculo v ON m.cpf = v.cpf_dono WHERE m.cpf = ?
Se o resultado fosse um conjunto relacionando as placas e os respectivos nomes dos proprietários, não há dúvida de que a segunda forma seria a ideal. Mas no meu caso, eu sei que a query só trará um único resultado, então neste caso, qual é a melhor forma?
Bom não existe nenhuma receita para query na verdade o ideal é sempre estudar/analisar caso a caso, depende muito de como foram gerados os indices se existem e etc.
Mas no chute imagino que o JOIN vá lhe dar uma resposta/performance melhor do que fazer duas queries em separado, mas só testando em algum analyzer da vida para você ter essa resposta principalmente que o que implica em performance é na verdade a longo prazo, quantidade de dados e etc.
Não sei se entendi direito, mas estou com o pessoal ai de cima, o join juntamente com uma boa formação de chaves, respectivos indices e outras particularidades de cada banco sempre vai lhe dar a melhor resposta principalmente neste seu caso; as duas tabelas parecem que estão relacionas pela coluna cpf (provavelmente é a chave primária) numa relação de 1:n então o join é o melhor caminho, vc obterá o resultado em um ÚNICO acesso.
Bem, no meu caso eu tenho chaves primárias compostas (com a PK de uma tabela sendo parte da PK de outra tabela), um modelo que não é bem estruturado.
Já tenho uma pesquisa que faz 3 joins para trazer uma tupla. Daí eu precisava trazer mais um valor para o qual precisaria dar um outer join em mais duas tabelas (com inner join entre si), o que deixaria a SQL cada vez mais pesada e complicada com mais e mais joins em chaves compostas.
Neste caso, o que vocês acham que tende a ser melhor? Joins mesmos por mais complicada que a SQL fique?
rapaz eu prefirira usar com join
porem nao sou mto fan de usar o inner nao, pq ele faz a consulta demorar mais…
use o left join … sempre uso dessa forma e fika td blz