Existe uma boa razão para eu ver VARCHAR (255) usado tantas vezes (em oposição a outro comprimento)?

StackOverflow https://stackoverflow.com/questions/1217466

Pergunta

campos de texto em vários cursos, livros e trabalhos, eu vi definidos como VARCHAR (255) como tipo de padrão para texto "shortish". Existe alguma razão bom que um comprimento de 255 é escolhido de forma muitas vezes, além de ser um número redondo ? É um reduto de algum tempo no passado, quando havia uma boa razão (ou não se aplica hoje)?

Eu percebo, é claro, que um limite mais apertado seria mais ideal, se você de alguma forma saber o comprimento máximo da cadeia. Mas se você estiver usando VARCHAR (255) que provavelmente indica que você não sabe o comprimento máximo, só que é uma string "shortish".


Nota: Eu 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. É esta a única razão? Isso parece tipo de arbitrária, já que você só estaria economizando dois bytes em comparação com VARCHAR (256), e você poderia apenas como facilmente poupar mais dois bytes, declarando-o VARCHAR (253).

Foi útil?

Solução

Historicamente, 255 caracteres tem sido muitas vezes o comprimento máximo de um VARCHAR em alguns DBMSes, e às vezes ainda acaba sendo o máximo eficaz se você quiser usar UTF-8 e ter a coluna indexada (por causa de limitações de comprimento índice) .

Outras dicas

255 é usado porque é o maior número de caracteres que podem ser contados com um número de 8-bit. Ela maximiza o uso da contagem de 8-bit, sem a necessidade de frivolously outro byte inteiro para contar os caracteres acima 255.

Quando usado desta forma, VarChar utiliza apenas o número de bytes + 1 para armazenar o texto, de modo que você pode também configurá-lo para 255, a menos que queira um limite rígido (como 50) sobre o número de caracteres no campo .

Provavelmente porque o SQL Server e Sybase (para citar dois que eu estou familiarizado com) costumava ter um máximo de 255 caracteres no número de caracteres em uma coluna VARCHAR. Para o SQL Server, isso mudou na versão 7 em 1996/1997 ou assim ... mas os velhos hábitos, por vezes, difíceis de morrer.

Eu vou responder à pergunta literal: não , não há uma boa razão para você ver VARCHAR (255) usado tantas vezes (há certamente razões , como discutido em outras respostas, não apenas bons). Você não vai encontrar muitos exemplos de projectos que falharam catastroficamente porque o arquiteto escolheu VARCHAR (300) em vez de VARCHAR (255). Isso seria um problema da insignificância quase total, mesmo se você estava falando sobre CHAR em vez de VARCHAR.

Quando você diz 2^8 você começa 256, mas os números em termos de computadores começa a partir do número 0. Assim, então você tem o 255, você pode sondá-lo em uma máscara de 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?

Nota: Eu encontrei esta pergunta (VARCHAR (255) v v TINYBLOB tinytext), que diz que VARCHAR (n) requer N + 1 bytes de armazenamento para n <= 255, n + 2 bytes de armazenamento para n> 255. É isto A única razão? Isso parece tipo de arbitrária, já que você só seria poupança dois bytes para comparação VARCHAR (256), e você poderia apenas como facilmente poupar mais dois bytes por declarando-o VARCHAR (253).

No. você não salvar dois bytes, declarando 253. A implementação do VARCHAR é muito provavelmente um contador de comprimento e um comprimento variável, matriz nonterminated. Isto significa que se você armazenar "Olá" em um varchar (255), você vai ocupar 6 bytes:. Um byte para o comprimento (número 5) e 5 bytes para as cinco letras

Um número 1 byte sem sinal pode conter o intervalo [0-255] inclusivo. Então, quando você vê 255, é principalmente porque os programadores pensar em 10 base (a piada?):)

Na verdade, por um tempo, 255 foi o maior tamanho que você poderia dar um VARCHAR em MySQL, e há vantagens em usar VARCHAR sobre o texto com indexação e outras questões.

Em muitas aplicações, como MsOffice (até a versão 2000 ou 2002), o número máximo de caracteres por célula foi 255. A transferência de dados a partir de programas capazes de lidar com mais de 255 caracteres por campo de / para essas aplicações foi um pesadelo. Atualmente, o limite é menor e menos dificultar.

Outra razão pode ser que em bibliotecas de acesso a dados muito antigos no Windows, como o RDO e ADO (versão COM não ADO.NET) você teve que chamar um método especial, GetChunk, para obter dados de uma coluna com mais de 255 caracteres . Se você limita uma coluna varchar a 255, este código extra não era necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top