>>>>> Lucas Mateus <lucasmateus.olive...@gmail.com> writes:
> É disso que to falando, usar o MD5 mesmo (binário) e não md5 > em hexadecimal, e acho sim muito comum emails com mais de 16 > bytes. > E se executar a query já passado o email com o md5, sem > precisar usar a função do BD é ainda melhor, ja que o BD faz o > hex por conta própria. Mudei o índice pra binário e o desempenho não mudou em nada. Índices são tipicamente btrees e o lookup na maioria das vezes é feito por um bitmap scan, que consegue percorrer a mesma quantidade de nós quanto há bits na arquitetura. A diferença precisaria ser de várias ordens de grandeza pra aparecer alguma diferença significativa, e mesmo assim, eu ainda escolheria a chave natural por questão de operacionalização/manutenção. mysql> select email from users_2 where email = mysql> 'teste967...@domain.com'; > +------------------------+ | email | +------------------------+ > | teste967...@domain.com | +------------------------+ 1 row in > set (0.21 sec) mysql> select email from users_2 where email_md5 = mysql> unhex(md5('teste967...@domain.com')); > +------------------------+ | email | +------------------------+ > | teste967...@domain.com | +------------------------+ 1 row in > set (0.00 sec) Espero que isso não seja uma comparação de tempo, porque está bem óbvio que o page cache do SO é quem está "otimizando" a segunda consulta, mas se isso serve de placebo, ok. -- Eden Cardim -- Insolide Soluções de TI Ltda. +55 11 9644 8225 http://insoli.de =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer