[firebase-br] Espaco: CHAR x VARCHAR

Douglas Tosi douglasht em gmail.com
Qua Jul 1 21:17:55 -03 2009


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,
-- 
Douglas Tosi
www.sinatica.com




Mais detalhes sobre a lista de discussão lista