On Sat, Sep 14, 2013 at 12:44:35PM -0300, Lucas Mateus wrote:
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@bla') and email 
= 'fulano@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.

Será que isso é realmente necessário? Quer dizer... qual o problema de ter um
índice no campo email mesmo? De qualquer forma, você já vai ter um custo
computacional na função md5 (ainda que pequeno), e tenho a impressão que
índices em campos texto não são tão ruins assim. Talvez varie de SGBD pra
SGBD? Em PostgreSQL, por exemplo, seria relevante ter essa coluna email_md5?

Att.
André

=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

Responder a