[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