[SP-pm] DBIx::Class
Tiago Peczenyj
tiago.peczenyj at gmail.com
Sun Sep 15 10:04:33 PDT 2013
acho q tem q usar java
Em 15/09/2013 17:50, "Lucas Mateus" <lucasmateus.oliveira at gmail.com>
escreveu:
> Show Eden, mas seu teste não tem absolutamente nada a ver com o
> que eu disse =)
>
>
> Em 15/09/2013, às 11:58, Eden Cardim <eden at insoli.de> escreveu:
>
> >>>>>> "André" == André Walker <andre at andrewalker.net> writes:
> >
> > André> Será que isso é realmente necessário? Quer dizer... qual o
> > André> problema de ter um índice no campo email mesmo? De qualquer
> > André> forma, você já vai ter um custo computacional na função md5
> > André> (ainda que pequeno), e tenho a impressão que índices em
> > André> campos texto não são tão ruins assim. Talvez varie de SGBD
> > André> pra SGBD? Em PostgreSQL, por exemplo, seria relevante ter
> > André> essa coluna email_md5?
> >
> > Imagino que isso seja um "mysqlianismo". No postgresql não precisa da
> > coluna adicional, você pode criar um índice pré-computado:
> >
> > CREATE INDEX email_md5 ON test (md5(email));
> >
> > No meu teste rápido aqui, ficou mais lento usar md5, imagino que seja
> > por conta do custo computacional de calcular o md5 pra toda consulta.
> > Porque depois do cálculo, a comparação com o índice é efetivamente a
> > mesma. Aliás, eu só vejo algum benefício potencial em usar md5 se a
> > string resultante do md5 for *menor* que a maioria das strings de
> > email, e não me parece que seja esse o caso. Mesmo assim, o postgresql
> > usa o tamanho da string como otimização de busca. Quando você
> > normaliza tudo pruma string md5 com o mesmo tamanho perde-se essa
> > otimização. De qualquer forma, tá aí:
> >
> > edenc=# \d test
> > Table "public.test"
> > Column | Type | Modifiers
> > --------+-------------------+-----------
> > email | character varying | not null
> > Indexes:
> > "test_pkey" PRIMARY KEY, btree (email)
> > "email_md5" btree (md5(email::text))
> >
> > edenc=# explain select email from test where email =
> 'c4ca4238a0b923820dcc509a6f75849b';
> > QUERY PLAN
> >
> --------------------------------------------------------------------------
> > Index Scan using test_pkey on test (cost=0.00..8.54 rows=1 width=33)
> > Index Cond: ((email)::text = 'c4ca4238a0b923820dcc509a6f75849b'::text)
> > (2 rows)
> >
> > edenc=# explain select email from test where md5(email) =
> md5('c4ca4238a0b923820dcc509a6f75849b');
> > QUERY PLAN
> >
> -------------------------------------------------------------------------------
> > Index Scan using email_md5 on test (cost=0.00..8.30 rows=1 width=33)
> > Index Cond: (md5((email)::text) =
> '28c8edde3d61a0411511d3b1866f0636'::text)
> > (2 rows)
> >
> > https://gist.github.com/edenc/8ff84819c38bf19c3151
> >
> > Rate MissMD5 HitMD5 MissNormal HitNormal
> > MissMD5 52165/s -- -5% -8% -13%
> > HitMD5 55157/s 6% -- -3% -8%
> > MissNormal 56948/s 9% 3% -- -5%
> > HitNormal 59701/s 14% 8% 5% --
> >
> > --
> > 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 at pm.org
> > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> > =end disclaimer
>
> =begin disclaimer
> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130915/efe8414d/attachment.html>
More information about the SaoPaulo-pm
mailing list