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