acho q tem q usar java Em 15/09/2013 17:50, "Lucas Mateus" <[email protected]> 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 <[email protected]> escreveu: > > >>>>>> "André" == André Walker <[email protected]> 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: [email protected] > > 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: [email protected] > 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: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
