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