Re: RES: [firebase-br] Tipo de Campo (onde é feito o Trim??)

eduardo eduardo em icontroller.com.br
Qua Mar 9 16:05:51 -03 2005


Não é tao simples assim. Quanto a maneira como estes dados trafegam até 
o cliente, não há diferença entre um e outro. Ambos transitam com seu 
tamanho definido.
O texto abaixo foi retirado do site da Firebase, mas já vi as mesmas 
explicações em outros lugares.
Isto é importante quando estamos modelando, pois às vezes somos 
seduzidos a super dimensionar o tamanho de um campo achando que por ser 
varchar não haverá prejuízo algum.
A BDE, por exemplo, não fazia distinção entre um e outro e retirava os 
espaços do final de qualquer campo. O DBExpress não retira os espaços se 
o campo for determinado como CHAR. Isto deve ocorrer em outros 
componentes de acesso, porém, independente do componente a comunicação 
entre cliente e servidor será com o tamanho completo.

O link para o artigo é 
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=250
Abaixo, o trecho mais relevante a esta questão

"Diferenças entre CHAR e VARCHAR
Muitas pessoas pensam que é melhor utilizar um VARCHAR pois ele armazena 
somente os dados (sem espaços no final), enquanto que o CHAR é 
armazenado em seu tamanho completo. Isso não é verdade. De fato, ambos 
CHAR e VARCHAR são armazenados no buffer de memória com seu tamanho 
completo (declarado no BD); quando o registro é armazenado no disco, 
então o método de compressão RLE é usado para comprimir todo o registro, 
ou seja : CHARs, VARCHARs, INTEGERs, DATEs, etc. todos juntos. Portanto, 
se voce quer economizar espaço, os CHARs são um pouco melhor que os 
VARCHARs (a diferença é que o VARCHAR armazena o tamanho do string em 2 
bytes). Há também um bug conhecido que faz com que o VARCHAR não limpe o 
"resto" do string quando voce altera o valor do mesmo para um string 
menor do que o anterior, o que torna a compressão menos eficiente.

Muitas pessoas também acreditam que quando se é usado VARCHAR, apenas os 
dados do string (sem os espaços em branco no final) são enviados pela 
rede, enquanto que o CHAR seria enviado em seu tamanho total. Isso 
também não é verdade. A comunicação entre o cliente e o servidor é feita 
via mensagens de tamanho fixo, portanto ambos CHAR e VARCHAR são 
enviados em seu tamanho total (declarado no BD).

Sendo assim, a decisão de que tipo usar deve se basear apenas nos 
requerimentos da aplicação. Por exemplo : Use CHARs para armazenar 
campos de tamanho fixo, use VARCHARs para armazenar dados de tamanho 
variável (e permitir portanto uma correta concatenação se necessário)."






Rubem Rocha wrote:
> Bom, se o VARCHAR() ignora os espaços em branco, logo deduz-se que o engine do banco de dados se encarrega de fazer esse 'TRIM'!!!!
> []s
> 
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em nome de Francisco Thiago
> Enviada em: quarta-feira, 9 de março de 2005 14:33
> Para: elcovre em codaintellisoft.com.br; FireBase
> Assunto: Re: [firebase-br] Tipo de Campo (onde é feito o Trim??)
> 
> 
> Eu não tô precisando de um Artigo comparando a performance de char / varchar 
> / blob.. só queria matar minha curiosidade de saber onde é dado o TRIM ... 
> sabe... um sim / não...
> 
> Mas.. valew... eu já esse artigo antes, só não lembrava
> 
> 
> Francisco Thiago de Almeida
> Enter&Plug Informática
> Divisão: Desenvolvimento e Banco de dados
> MSN: thiago em enterplug.com.br
> 
> ----- Original Message ----- 
> From: "Evandro L. Covre" <elcovre em codaintellisoft.com.br>
> To: "'FireBase'" <lista em firebase.com.br>
> Sent: Wednesday, March 09, 2005 1:13 PM
> Subject: RES: [firebase-br] Tipo de Campo (onde é feito o Trim??)
> 
> 
> Para sanar suas dúvidas tem um artigo no www.firebase.com.br que faz justamente esse comparativo entre Char, Varchar e Blob
> 
> Abraço
> 
> Evandro L. Covre
> Analista de Sistemas - Coda Intelligent Softwares
> Tel: 16 2101 2601
> http://www.codaintellisoft.com.br
> Ribeirão Preto - SP
> 
> 
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em nome de Rogerio Enviada em: quarta-feira, 9 de março de 2005 12:48
> Para: FireBase
> Assunto: Re: [firebase-br] Tipo de Campo (onde é feito o Trim??)
> 
> Francisco...
> O varchar é interessante para textos grandes, sendo que se for gravado nele poucas informacoes, o bd nao ira gravar os, vamos supor, 300 campos e sim apenas a quantidade de letras digitadas...
> 
> Ja O Char gravaria extamente a quantidade de bytes especificada no Bd.
> 
> QUanto ao blob tbem quero saber como utlizalo...
> 
> abraco.
> ----- Original Message ----- 
> From: "Francisco Thiago" <jeandeadlucky em yahoo.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Wednesday, March 09, 2005 12:22 PM
> Subject: [firebase-br] Tipo de Campo (onde é feito o Trim??)
> 
> 
> 
>>Eu costumo usar VarChar para campos com até no máximo 300 caracteres.
>>
>>Falando nisso...
>>
>>Quando se usa campos Varchar, é mandando para o cliente os 300 espaços 
>>ou somente o que for preenchido? (150 caracteres por exemplo)
>>
>>
>>[]'s
>>
>>Francisco Thiago de Almeida
>>Enter&Plug Informática
>>Divisão: Desenvolvimento e Banco de dados
>>MSN: thiago em enterplug.com.br
>>
>>----- Original Message -----
>>From: "Edinho" <infokernel em yahoo.com.br>
>>To: "Lista Firebird" <lista em firebase.com.br>
>>Sent: Wednesday, March 09, 2005 11:37 AM
>>Subject: [firebase-br] Tipo de Campo
>>
>>
>>
>>>Pessoal!
>>>
>>>
>>>Que tipo de campo vcs utilizam quando precisa armazenar Texto ? Qual 
>>>é melhor Blob ou um Varchar.Eu não muita noção desse Blob qual 
>>>tamanho  utilizar?
>>>
>>>[]'s
>>>
>>>Edinho
>>>
>>>
>>>---------------------------------
>>>Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador 
>>>do Yahoo! agora. ______________________________________________
>>>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
>>>Para editar sua configuração na lista, use o endereço
>>>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>>>
>>
>>
>>
>>
>>
>>______________________________________________
>>FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para 
>>editar sua configuração na lista, use o endereço
> 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 
>>Esta mensagem foi verificada pelo E-mail Protegido Terra. Scan engine: 
>>McAfee VirusScan / Atualizado em 08/03/2005 / Versão:
> 
> 4.4.00 - Dat 4442
> 
>>Proteja o seu e-mail Terra: http://mail.terra.com.br/
>>
>>
>>
>>--
>>No virus found in this incoming message.
>>Checked by AVG Anti-Virus.
>>Version: 7.0.308 / Virus Database: 266.6.3 - Release Date: 07/03/05
>>
>>
> 
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 
> 
> 
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> 





Mais detalhes sobre a lista de discussão lista