[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