Como o varchar ocupa um espaço em disco proporcional ao tamanho do campo, existe alguma razão pela qual nem sempre devemos definir varchar como o máximo, por exemplo, varchar(8000)
no SQL Server?
Na tabela create, se eu vir alguém fazendo varchar(100)
, devo dizer que não, você está errado, deve fazer varchar(8000)
?
sql-server
varchar
Aleksandr Levchuk
fonte
fonte
Respostas:
Resumo: não faça isso.
fonte
Supondo que você esteja se referindo ao SQL Server, posso pensar em um.
Há um limite para o tamanho (8K) de uma linha em uma tabela e o SQL permite definir campos varchar que teoricamente poderiam exceder esse limite. Portanto, o usuário poderá obter erros se colocar muitos dados no campo relacionado a isso.
A partir do SQL 2K8, você pode exceder esse limite, mas há implicações no desempenho .
Além disso, há toda a verificação de razoabilidade de limitar o tamanho ao que você espera que os dados sejam. Se você deseja um campo de tamanho ilimitado, por que não usar texto ou ntext?
fonte
Certamente depende de quais informações estão sendo armazenadas no campo?
Algumas coisas terão um comprimento máximo por várias razões e, se tiver que haver um comprimento máximo, esse deverá ser o comprimento do seu campo.
Se teoricamente não houver comprimento máximo, eu questionaria por que o varchar seria usado.
fonte
No contexto dos bancos de dados Oracle, aprendi que sempre usar o menor tamanho de campo para colunas de banco de dados tem uma armadilha.
Ao mover dados por meio de exportação e importação de um banco de dados com agrupamento de byte único para outro com agrupamento de vários bytes (como Oracle XE), o comprimento em bytes pode aumentar e a importação dos dados para as tabelas criadas pela importação falha. Obviamente, a Oracle tem a opção de definir o comprimento do varchar2 como char ou como byte.
O que quero dizer aqui é que nem sempre é aconselhável definir um campo sempre o menor possível. Tenho visto muitas tabelas de alterações para aumentar o campo posteriormente (causado por requisitos alterados).
Ter 20% - 100% de campo não utilizado é uma opção discutível aqui.
fonte