when tamaño maximo length sql text varchar

length - tamaño maximo varchar sql server



¿Cuánto más ineficientes son los textos(blobs) que los de varchar/nvarchar? (5)

Digo, concéntrese en las necesidades de los usuarios y solo preocúpese por los problemas de rendimiento de la base de datos cuando surgen estos problemas. Pregúntese a usted mismo "¿se beneficiarán mis usuarios si limito la cantidad de datos que pueden ingresar?".

Tengo una gran caricatura en la pared que dice "no es lo que hace el software, es lo que hace el usuario".

Estamos haciendo muchas formas grandes, pero sencillas, para un proyecto bastante grande (alrededor de 600 usuarios lo utilizan durante todo el día; eso es importante para mí al menos ;-)).

Los formularios tienen muchas secciones de tipo pregunta / respuesta, por lo que es natural que algunas personas escriban una oración, mientras que otras escriben una novela. ¿Qué tan beneficioso sería poner un límite de caracteres en algunos de estos campos realmente ?

(Por favor incluya referencias o citas, si es necesario / posible - ¡Gracias!)


Si no tiene limitaciones en el tamaño de los datos, entonces ¿por qué preocuparse? Esto no parece un proyecto de misión crítica, incluso con 600 usuarios y varios miles de registros. Use CLOB / BLOB y termine con esto. Tengo dudas en cuanto a si vería algún aumento importante en la limitación de tamaños y el riesgo de pérdida de datos. Dicho esto, debe diseñar dichos límites antes de la implementación.

Por lo general, varchar es el mejor para almacenar los valores que desea usar de forma lógica y realizar comparaciones de "valores enteros". El texto es para datos no estructurados. Si su proyecto es un resultado de encuesta con texto no estructurado, use CLOB / BLOB

Semi-Referencia: trabajo con cientos de miles de registros de centros de llamadas a veces donde utilizamos un CLOB para almacenar el diálogo entre empleados y clientes.


blob y text / ntext se almacenan fuera del contexto de la fila y solo se almacena una referencia en el objeto, lo que da como resultado un tamaño de fila más pequeño, lo que mejorará el rendimiento en los índices agrupados.

Sin embargo, como text / ntext no se almacena con la fila, la recuperación de los datos tarda más, y estos campos no se pueden usar en ninguna declaración de comparación.


No mencionas qué servidor sql estás usando

Si está utilizando MySql, existen ventajas definidas en cuanto a la velocidad para usar campos de longitud fija para mantener la tabla en modo estático; sin embargo, si tiene campos de ancho variable, la tabla cambiará a dinámica y perderá el beneficio de especificar la longitud del campo .

http://dev.mysql.com/doc/refman/5.0/en/static-format.html
http://dev.mysql.com/doc/refman/5.0/en/dynamic-format.html

Microsoft SQL Server tiene ganancias de rendimiento similares cuando usa columnas de longitud fija. Con columnas de longitud fija, el servidor sabe exactamente cuál es el desplazamiento y la longitud de los datos en la fila. Con columnas de longitud variable, el servidor conoce el desplazamiento pero tiene que almacenar la longitud real de los datos como un contador anterior de 2 bytes. Esto tiene un par de implicaciones que se discuten en este interesante artículo que analiza el rendimiento como una función del espacio en disco y las ventajas de las columnas de longitud variable.

Si está utilizando SQL Server 2005 o posterior, puede aprovechar varchar (max). Este tipo de columna tiene la misma capacidad de almacenamiento de 2 GB de BLOB, pero los datos se almacenan en fragmentos de 8K con las páginas de datos de la tabla en lugar de almacenarse por separado. Así que obtienes la ventaja de tamaño grande, solo utilizas 8K en tus páginas a la vez, acceso rápido para el motor de DB y la misma semántica de consulta que funciona con otros tipos de columna funcionan con varchar (max).

Al final, especificar una longitud máxima en una columna de variable principalmente le permite restringir el tamaño de crecimiento de su base de datos. Una vez que use columnas de longitud variable, perderá la ventaja de las filas de tamaño fijo y varchar (max) tendrá el mismo rendimiento que varchar (10) cuando tenga la misma cantidad de datos.