Em 17/02/2012 09:50, Moisés P. Sena escreveu:
> Bom dia pessoal!
>
> Estou modelando um sistema de autenticação de usuarios mas estou na
> duvida (Do ponto de vista do BD, e nao da aplicacao):
>
> a) Quero colocar o login como PK da tabela usuario como VARCHAR(30)
> b) Quero colocar o nome como PK da tabela grupo como VARCHAR(30)
>
> O que voces me falam de performance em usar VARCHAR ou BIGINT?
>
> Existe algum outro campo de texto mais rapido que VARCHAR?

        Acho que depende muito, tenho sistemas de controle de entregas e 
portanto uma tabela de tracking de cada uma destas entregas. Nesta 
tabela tenho informações de o que cada usuário que manuseou esta entrega 
fez.

        Em um cliente esta tabela tem mais de 2 bilhões de registros. Antes eu 
utilizava o código de barras das entregas como sendo minha chave 
primária e portanto, tipo varchar. Quando fiz testes com biginteger tive 
uma melhoria muito substancial de performance e de espaço em disco 
ocupado, além de índices muito menores.

        Eu quase sempre utilizo chaves artificiais. Porque conforme já 
expressei minha opinião aqui na lista, na prática, é quase impossível 
conseguir chaves naturais fiáveis. São poucas as entidades que o possuem.

        Cada um sabe onde seu sapato aperta.

        Levando para seu exemplo, tente imaginar, que nesta tabela de tracking 
eu armazeno o usuário e ao invés de gravar o código deste usuário 
(integer), 123 por exemplo, eu gravasse o nome: "EDMILSON.NASCIMENTO". 
Só com este campo desta tabela eu teria cerca de 27 GB de espaço 
economizado, sem contar os índices. Por mais que tentem me convencer que 
a diferença de performance não é grande, para mim é suficientemente grande.

        Abraço,

--
Shander Lyrio
http://about.me/shander

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a