Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Relacionando Tabelas

Aprendi o Join, como fazia até então.. ex: tab_cliente id_cliente nome_cliente


tab_compra id_compra id_compracliente valor_compra


SELECT nome_cliente,valor_compra from tab_cliente, tab_compra where id_compra='1' and id_client=id_compracliente

Sempre me retornou a informação desejada, é errado trabalhar dessa maneira, uso mais recurso de memoria no processamento ? Caso tenha um banco maior, a consulta será mais lenta do que usando join ?

Ja estou bem acostumando nisso, é quase automático fazer esse tipo de pesquisa dessa forma, não sei se é o mais correto... obrigado =D

4 respostas

Fala Yago,

Depende muito do banco de dados que você está usando, o Oracle se eu não me engano meio que converte o seu comando para JOINS, o JOIN você já avisa pro banco de dados que você vai usar recursos de duas ou mais tabelas e com as condições do ON você "avisa" o banco falando "Ó, é só esses daqui", em uma maneira mais simples de falar, se você não usar o JOIN, alguns bancos vão buscar TODOS os registros para depois usar as condições, isso em um banco grande pode gerar lentidão de processos.

Abraços!

Uso MYSQL, mais alguem tem comentarios sobre o assunto ?

Bom dia Yago!

Até onde eu sei, não tem diferença fazer assim:

SELECT nome_cliente, valor_compra FROM tab_cliente, tab_compra WHERE id_compra='1' AND id_client=id_compracliente

Ou assim:

SELECT nome_cliente, valor_compra FROM tab_compra INNER JOIN tab_cliente ON tab_cliente.id_client = tab_compra.id_compracliente WHERE tab_compra.id_compra='1'

Nem de resultado, nem de performance.

solução!

Não tenho MySQL aqui, mas fiz alguns testes usando SQL Server. Fiz algo parecido ao que foi postado acima, vínculo entre duas tabelas e filtro por um campo numérico, uma tabela com 500 mil linhas e outra com 300 mil linhas.

No meu caso, a query com JOIN rodou mais rápido do que a query que usou apenas o WHERE, mas, a diferença de tempo foi pequena (0.0781286 segundos usando WHERE e 0.0781252 segundos usando JOIN)

Além dos vínculos, é importante lembrar dos índices.