[SP-pm] DBIx::Class

Lucas Mateus lucasmateus.oliveira at gmail.com
Sat Sep 14 08:44:35 PDT 2013


	Particularmente eu valido se existe antes de inserir, acho mais fácil tomar a decisão (informa que ja existe ou envia um email para trocar a senha) é mais fácil e acertivo que tratar o erro do BD.

	Para tornar esse processo mais rápido eu crio um campo do tipo binary 16 bytes e gravo o md5 (binario sem hexadecimal) do email e utilizo ele para consulta.

	Algo assim:  select id from users where email_md5 = md5('fulano em bla') and email = 'fulano em bla';

	Onde somente o campo email_md5 tem index e você tem certeza que ele sempre terá 16 bytes, se você tiver 1 milhão de usuários essa consulta terá um custo risório. A segunda comparação é somente para evitar colisões de md5 e o index é feito somente no campo email_md5.


Em 14/09/2013, às 12:06, Solli Honorio <shonorio em gmail.com> escreveu:

> Pessoal
> 
> Estou escrevendo um cadastro que tem o campo email com unique index. O meu primeiro impulso é fazer uma pesquisa no cadastro para verificar se o email já não existe, mas me dei conta que se eu tentar criar o registro e o email já existir, vou receber um erro informando isto.
> 
> O que vocês acham disto ? É feio jogar com o erro (mesmo tratando o erro de maneira correta) ? Ou é melhor deixar de viver perigosamente e fazer o search antes do create.
> 
> E porquê estou com está dúvida ? Não medi, mas teoricamente gravar e tratar o erro deve (ou deveria) ser mais rápido (pq eu faço "apenas uma operação de IO").
> 
> Abraços,
> 
> Solli Honorio
> 
> -- 
> "o animal satisfeito dorme". - Guimarães Rosa
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer



More information about the SaoPaulo-pm mailing list