[firebase-br] Espaco: CHAR x VARCHAR

Josué josue em ciberpoint.com.br
Sex Jul 3 16:16:52 -03 2009


Amigos permitam-me entrar na discussão;
Esta é uma opinião, não tem fundamento científico, é experiência prática.

Como sou Jurássico, iniciei na informática lá nos idos de 1979 (xiii faz 
tempo), era crucial naquela época essa economia de armazenamento, pois as 
memorias eram medidas em Kbytes, discos então nem pensar, os primeiros que 
conheci foram os bolachões de 8 polegadas, com drives do tamanho de uma CPU 
que ficavam martelando na cabeça da gente. Banco de dados?. normalmente 
usava-se matrizes que eram armazenadas em fita junto com os programas. 
Quando chegou o Visicalc foi um alvoroço, seguido do Dbase e depois o 
Clipper. Imaginem que uma simples letra grega que era obrigatório nos 
relatórios de Engenharia como "alfa, Beta, Omega, etc" tinha que programar 
através de comandos da impressora, parar no local onde iria imprimir tal 
caracter, setar a impressora para modo gráfico, enviar um código binário 
para desenhar o simbolo, voltar no modo texto e continuar a impressão. 
simples, não?, hoje é só selecionar a fonte! Sem falar que se trocasse a 
impressora," ia tudo pro brejo" rsrsr.

Era imprecindivel economizar memória.
sabemos que os campos char são fixos, mas não dependem de processamento. 
Portanto são disponibilizados mais rapidamente.
Por outro lado os campos VARCHAR dependem de processamento, como os dados 
compactados (a grosso modo) Portanto, mais lentos.

Minha opinião, deixo claro isso. a não ser que as varições de tamanho sejam 
exageradas, aí eu iria para uma análise mais criteriosa, Levando em conta os 
tamanhos de HD, memoria RAM , processamento, etc das maquinas atuais,  só 
uso campos CHAR. A meu ver, pela simplicidade, portabilidade, 
compatibilidade, etc, só traz vantagens.

Eu acredito que na tecnologia dos HDs atuais, é mais preocupante o 
gerenciamento dos clusters, pode ser que se perca mais espaço com clusters 
subutilizados  do que a economia dos VARCHAR.

Vc sabendo exatamente o tamanho do seu registro, da pra saber quantos 
clusters vão ser necessários, e planejar isto, minimizando espaços. Se não, 
vai ficar a mercê do acaso, e aí ????


É lógico que cada caso é um caso e depende de análise, mas até onde consegui 
aprender as coisas não mudaram muito, só estão maiores e mais rápidas.
O que mudou mesmo foi a forma de fazer, hoje tem tudo pronto, é só usar.



Josué D. Silva
Telecomunicações Curupira Ltda
SCM - Ouroeste - SP
017 - 38431606
----- Original Message ----- 
From: "Eduardo Jedliczka" <jedyfb em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, July 01, 2009 10:07 PM
Subject: Re: [firebase-br] Espaco: CHAR x VARCHAR


ótima resposta.... e uma dica para quem ainda não "pegou" a diferença...
o VAR de varchar é a abreviação de VARIÁVEL, ou seja, um campo varchar é
um campo char de tamanho variável que aceita de ZERO até o seu tamanho
máximo de caracteres.

Abraço

Eduardo

Em Qua, 2009-07-01 às 21:17 -0300, Douglas Tosi escreveu:

> 2009/7/1 Rodrigo <dominio em engeplus.com.br>:
> > Mas pelo que sei Char é usado para campos com tamanho fixo, ex. Char(1) 
> > para
> > indicar se é verdadeiro ou falso, "S" ou "N"
> > ou Estado char(3) para 'SC' ou 'PR' e varchar(160) se usar  100 ele 
> > libera
> > os outros 60, nao reserva.
>
> A idéia é esta mesma, Rodrigo. Mas char() pode ser útil também para
> campos maiores. Por exemplo para armazenar uma guid em formato string,
> pode-se definir um char(32). O que determina a escolha de char é que
> todos os valores deste campo terão exatamente 32 caracteres.
>
> Mas é engano achar que o armazenamento do varchar é mais eficiente.
> O tráfego na rede sim é mais eficiente, mas para armazenar o varchar
> consome 2 bytes a mais que o char em todos os casos.
> Outro fator a se levar em consideração é que o char(n) sempre será
> interpretado como tendo n caracteres. Então imagine que você declara
> um char(4) e armazena "ab". O valor real retornado para sua aplicação
> quando você selecionar este campo será "ab  " (com dois espaços no
> final).
>
> hth,
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista