[firebase-br] Uma tabela versus um join

Eduardo Jedliczka edujed em gmail.com
Ter Mar 15 18:14:38 -03 2011


Tudo na mesma tabela é mais rápido, pois o banco realiza menos trabalho para
fazer a mesma coisa.

Porém, dependendo do caso, isto pode ferir algumas formas normais.

Como dito anteriormente, geralmente não há certo ou errado, apenas formas
que são melhores em alguns casos, mas que podem ser "medianas" ou "lentas"
em outras.

veja sua modelagem de dados, existe outras tabelas que dependam do CPF/CNPJ
além do cliente ? talvez seja interessante começar por ai.

ahh... campos null não geram degradação de performance, exceto se o campo
for indexado. Como qualquer índice, se uma grande quantidade de valores
forem iguais (ou nulos) a selectividade, ou seja, a eficiência, será baixa.

==========================
Eduardo Jedliczka
Apucarana - Pr
==========================



Em 15 de março de 2011 17:37, Felipe Aron <felipearon em gmail.com> escreveu:

> Não existe o jeito "errado" e sim jeitos mais inteligentes, elegantes,
> etc...
>
> Se for criar uma relação entre tabela PESSOA e uma PESSOA_FISICA, por
> exemplo, a relação seria de 1 para 1 portanto na tabela PessoaFisica a
> minha
> Primary Key também seria minha Foreight Key apontando para tabela Pessoa.
>
> Agora o que faço é:
>
> Utilizo uma tabela - Pessoa, onde nela tenho um campo Flag dizendo que é um
> cadastro Físico (F) ou Jurídico (J). Sendo que para os campos CPF/CNPJ e
> RG/IE - terei dois campos apenas. Se o flag for Fisico, sei que ali no
> campo
> existe um CPF, se não - for jurídico, irá conter um CNPJ. O mesmo vale para
> o RG/IE.
>
> Criaria uma tabela estendida (relação 1 para 1) somente para campos
> ESPECIFICOS para cada caso.
>
>
> Em 15 de março de 2011 17:12, Levy Moreira <levymoreira.ce em gmail.com
> >escreveu:
>
> > Gente quero saber o seguinte, o que é mais rapido um select assim:
> >
> > select * from clientes
> >
> > ou um assim:
> >
> > select *
> > from pessoas p
> >       left join pessoas_fisicas f on f.id = p.id
> >       left join pessoas_juridicas j on j.id = p.id
> >
> > levando em consideração que as tabelas seriam mais ou menos assim:
> > caso01:
> >
> > clientes
> > -----------
> > id
> > nome
> > cpf
> > cnpj
> > endereco
> > rz_social
> > ...
> >
> > caso02
> >
> > pessoas
> > -------------
> > id
> > nome
> > endereco
> > numero_casa
> >
> > pessoas_fisicas
> > -----------------------
> > id
> > id_pessoa
> > cpf
> > ..
> >
> > pessoas_juridicas
> > ----------------------------
> > id
> > id_pessoa
> > cnpj
> > rz_social
> >
> >
> > Por fim, vale a penda essas 3 tabelas ?
> > Meu professor disse que o primeiro select é mais lento
> > que o segundo e eu queria esclarecer... ele justificou a existencia
> > de varios campos nulos... mas acho que um join demoraria mais.
> >
> > Obrigado a todos desde já.
> >
> > --
> > Levy Moreira - Programador
> > Sistech Informática - Juazeiro do Norte - CE
> >
> >
> ...........................................................................
> > "Aviso de confidencialidade profissional" - Esta mensagem eletrônica e
> > seus anexos são destinados exclusivamente ao(s) destinatário(s) acima e
> > podem conter informações confidenciais sujeitas a restrição legal de
> > comunicação entre as partes. Caso tenha recebido esta mensagem por
> engano,
> > fica V.S.ª ciente de que a distribuição, divulgação ou disseminação das
> > informações aqui contidas ou anexadas é terminantemente proibida,
> > sujeitando
> > o responsável às penalidades aplicáveis. Assim, solicitamos a gentileza
> > de retorná-la de imediato ao remetente, eliminando-a definitivamente de
> > seu sistema. Em caso de dúvida, queira por favor entrar em contato."
> >
> > "Confidentiality notice" - This message and its attachments are
> > addressed solely to the persons above and may contain privileged and
> > confidential
> > communication. If you have received the message in error, the
> > distribution or dissemination of the content hereof is prohibited. Please
> > return it
> > immediately to the sender and please delete the message from your system
> > on a permanent basis. Should you have any questions, please contact."
> >
> >
> ...........................................................................
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
>
> --
> Analista programador
> #FollowMe: @felipearon <http://twitter.com/felipearon> (
> http://felipearon.com.br/)
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista