Ir ao conteúdo
  • Cadastre-se
Poliano Martini

Filtro na cláusula WHERE ou INNER JOIN

Recommended Posts

Pessoal, me tirem uma dúvida...

 

Suponha-se a existência dessas duas tabelas:

CREATE TABLE cliente (id SERIAL PRIMARY KEY,nome CHARACTER VARYING(100));CREATE TABLE conta_receber (id SERIAL PRIMARY KEY,id_cli INTEGER REFERENCES cliente (id),qtd_parcela INTEGER,valor NUMERIC(11,2));INSERT INTO cliente (id, nome) VALUES (0, 'CONSUMIDOR');INSERT INTO cliente (id, nome) VALUES (1, 'FULANO');INSERT INTO cliente (id, nome) VALUES (2, 'BELTRANO');INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (1, 0, 2, 100.00);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (2, 1, 1, 75.00);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (3, 1, 1, 64.25);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (4, 0, 3, 90.00);INSERT INTO conta_receber (id, id_cli, qtd_parcela, valor) VALUES (5, 1, 2, 77.80);

Agora vou fazer uma SELECT na tabela "conta_receber", mas não pode trazer os registros para o cliente = 0, então ficaria assim:

SELECT *FROM  conta_receberINNER JOIN  cliente ON cliente.id = conta_receber.id_cliWHERE  conta_receber.id_cli != 0

Se eu colocar o filtro no INNER JOIN, existe alguma diferença em questão de desempenho? Sei que os dois modos vão trazer o mesmo resultado, mas quero saber qual a melhor prática.

SELECT *FROM  conta_receberINNER JOIN  cliente ON cliente.id = conta_receber.id_cli AND conta_receber.id_cli != 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao, já usei das duas formas, mas cada caso eu penso apenas na estética do código, 99% dos casos eu deixo o join apenas para os relacionamentos, e o where para as condições..

Quando estiver desenvolvendo dê uma parte de sua atenção para verificar a beleza de seu código. É uma coisa boba, mas fara a diferença quando precisar fazer manutenção depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

99% dos casos eu deixo o join apenas para os relacionamentos, e o where para as condições..

 

Exatamente desse modo que venho praticando. É que em um teste eu vi que em ambas as maneiras o resultado era o mesmo, então a dúvida foi se teria alguma diferença em questão de desempenho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×