[SP-pm] DBIx::Class

Eden Cardim eden at insoli.de
Sun Sep 15 20:52:21 PDT 2013


>>>>> Lucas Mateus <lucasmateus.oliveira em 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> 'teste967847 em domain.com';
    > +------------------------+ | email | +------------------------+
    > | teste967847 em domain.com | +------------------------+ 1 row in
    > set (0.21 sec)

    mysql> select email from users_2 where email_md5 =
    mysql> unhex(md5('teste967848 em domain.com'));
    > +------------------------+ | email | +------------------------+
    > | teste967848 em 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


More information about the SaoPaulo-pm mailing list