Dado que varchar ocupa un espacio en disco proporcional al tamaño del campo, ¿hay alguna razón por la que no siempre deberíamos definir varchar como el máximo, por ejemplo, varchar(8000)
en SQL Server?
En crear tabla, si veo a alguien haciendo varchar(100)
, debería decirle que no, ¿estás equivocado varchar(8000)
?
sql-server
varchar
Aleksandr Levchuk
fuente
fuente
Respuestas:
Resumen: no lo hagas.
fuente
Suponiendo que se refiere a SQL Server, se me ocurre uno.
Hay un límite para el tamaño (8K) de una fila en una tabla y SQL le permite definir campos varchar que teóricamente podrían exceder ese límite. Por lo tanto, el usuario podría obtener errores si pone demasiados datos en el campo relacionado con eso.
A partir de SQL 2K8, puede superar este límite, pero existen implicaciones de rendimiento .
Además, existe toda la verificación de razonabilidad de limitar el tamaño a lo que espera que se vean los datos. Si desea un campo de longitud ilimitado, ¿por qué no ir con texto o ntext?
fuente
¿Seguramente depende de qué información se almacena en el campo?
Algunas cosas tendrán una longitud máxima por varias razones y si tiene que haber una longitud máxima, entonces esa debería ser la longitud de su campo.
Si teóricamente no hay una longitud máxima, entonces me preguntaría por qué se usaría varchar.
fuente
Contexto de las bases de datos de Oracle Aprendí que usar siempre el tamaño de campo más pequeño para las columnas de la base de datos tiene un inconveniente.
Cuando se mueven datos mediante importación, exportación desde una base de datos con clasificación de un solo byte a una con clasificación de múltiples bytes (como Oracle XE), la longitud en bytes puede aumentar y la importación de los datos en las tablas creadas por importación falla. Por supuesto, Oracle tiene la opción de definir la longitud de varchar2 como char o byte.
Mi punto aquí es que no siempre es prudente definir un campo siempre tan pequeño como sea posible. He visto muchas tablas alternativas para aumentar los campos con posterioridad (debido a los requisitos modificados).
Tener un 20% - 100% de campo sin usar con es una opción discutible aquí.
fuente