Em vários cursos, livros e trabalhos, vi campos de texto definidos como VARCHAR (255) como o tipo padrão de texto "abreviado". Existe alguma boa razão para que um comprimento de 255 seja escolhido com tanta frequência, além de ser um bom número redondo ? É um empecilho de algum tempo no passado em que havia uma boa razão (se aplica ou não hoje)?
Percebo, é claro, que um limite mais apertado seria mais ideal, se você souber de alguma forma o comprimento máximo da corda. Mas se você estiver usando VARCHAR (255), isso provavelmente indica que você não conhece o comprimento máximo, apenas que é uma string "abreviada".
Nota: Encontrei esta pergunta ( varchar (255) v tinyblob v tinytext ), que diz que VARCHAR ( n ) requer n +1 bytes de armazenamento para n <= 255, n +2 bytes de armazenamento para n > 255. Essa é a única razão? Isso parece meio arbitrário, já que você salvaria apenas dois bytes em comparação com o VARCHAR (256), e também poderia salvar facilmente outros dois bytes declarando-o como VARCHAR (253).
255 é usado porque é o maior número de caracteres que pode ser contado com um número de 8 bits. Ele maximiza o uso da contagem de 8 bits, sem exigir frivolamente outro byte inteiro para contar os caracteres acima de 255.
Quando usado dessa maneira, o VarChar usa apenas o número de bytes + 1 para armazenar seu texto; portanto, você pode configurá-lo para 255, a menos que queira um limite rígido (como 50) no número de caracteres no campo.
fonte
utf8
,varchar(85)
é o limite sobre o qual a passagem ultrapassa o byte de comprimento de um a dois bytes. Se éutf8mb4
, évarchar(63)
. Elas são significativas porque são o máximo para o qual o comprimento de um VARCHAR pode ser estendido através do uso da ALTER TABLE online . Conseqüentemente, derivei esses números criando uma tabela com umavarchar(2) charset utf8
coluna e vendo até onde consegui estendê-laALGORITHM=INPLACE
.Provavelmente porque o SQL Server e o Sybase (para citar dois que eu conheço) costumavam ter um máximo de 255 caracteres no número de caracteres em uma
VARCHAR
coluna. Para o SQL Server, isso mudou na versão 7 em 1996/1997 ou mais ... mas os hábitos antigos às vezes são difíceis.fonte
Vou responder à pergunta literal: não , não há uma boa razão para você ver o VARCHAR (255) usado com tanta frequência (existem de fato razões , conforme discutido nas outras respostas, mas não boas). Você não encontrará muitos exemplos de projetos que falharam catastroficamente porque o arquiteto escolheu VARCHAR (300) em vez de VARCHAR (255). Isso seria uma questão de insignificância quase total, mesmo se você estivesse falando sobre CHAR em vez de VARCHAR.
fonte
Quando você diz
2^8
que recebe256
, mas os números em termos de computadores começam a partir do número0
. Então, você tem o255
, você pode sondá-lo em uma máscara da Internet para o IP ou no próprio IP.255
é o valor máximo de um número inteiro de 8 bits:11111111 = 255
Isso ajuda?
fonte
Não. Você não salva dois bytes declarando 253. A implementação do varchar provavelmente é um contador de comprimento e uma matriz não terminada de comprimento variável. Isso significa que se você armazenar "olá" em um varchar (255), ocupará 6 bytes: um byte para o comprimento (o número 5) e 5 bytes para as cinco letras.
fonte
VARCHAR
dessa maneira anula todo o ponto de usar emVARCHAR
vez deCHAR
.Um número de 1 byte não assinado pode conter o intervalo [0-255], inclusive. Então, quando você vê 255, é principalmente porque os programadores pensam na base
10
(entendeu a piada?) :)Na verdade, por um tempo, 255 foi o maior tamanho que você poderia dar a um VARCHAR no MySQL, e há vantagens em usar o VARCHAR sobre o TEXTO com indexação e outros problemas.
fonte
Em muitos aplicativos, como o MsOffice (até a versão 2000 ou 2002), o número máximo de caracteres por célula era 255. Mover dados de programas capazes de manipular mais de 255 caracteres por campo para / desses aplicativos foi um pesadelo. Atualmente, o limite é cada vez menos difícil.
fonte
0000 0000 -> este é um número binário de 8 bits. Um dígito representa um pouco.
Você conta assim:
0000 0000 → (0)
0000 0001 → (1)
0000 0010 → (2)
0000 0011 → (3)
Cada bit pode ter um de dois valores: ativado ou desativado. O número mais alto total pode ser representado pela multiplicação:
Ou
Subtraímos um porque o primeiro número é 0.
255 pode conter um pouco (sem trocadilhos) de valores.
À medida que usamos mais bits, o valor máximo aumenta exponencialmente. Portanto, para muitos propósitos, adicionar mais bits é um exagero.
fonte
Outro motivo pode ser o fato de que em bibliotecas de acesso a dados muito antigas no Windows, como RDO e ADO (versão COM não ADO.NET), era necessário chamar um método especial, GetChunk, para obter dados de uma coluna com mais de 255 caracteres. Se você limitou uma coluna varchar a 255, esse código extra não era necessário.
fonte