[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