¿La longitud del campo de la database (máxima) afecta el performance?

En mi empresa, tenemos una database henetworkingada con varias tablas y, por lo tanto, muchos, muchos campos.

Muchos de los campos parecen tener grandes límites (por ejemplo, NVARCHAR(MAX) ) que nunca se alcanzan.

¿Hacer arbitrariamente los campos su ancho máximo o 2 a 3 veces más grande que lo que normalmente se ingresa afecta negativamente el performance?

¿Cómo se debe equilibrar el performance con la duración del campo? ¿Hay un equilibrio?

Hay dos partes en esta pregunta:

¿El uso de NVARCHAR sobre VARCHAR afecta el performance? Sí, almacenar datos en campos Unicode duplica los requisitos de almacenamiento. Sus datos almacenados en esos campos tienen el doble de tamaño (hasta que salió SQL Server 2008 R2, que incluye la compression unicode . Los escaneos de su tabla demorarán el doble y solo la mitad de los datos almacenados en la memory del buffer cache.

¿El uso de MAX perjudica el performance? No directamente, pero cuando usa VARCHAR (MAX), NVARCHAR (MAX) y esos types de campos, y si necesita indexar la tabla, no podrá volver a generar esos índices en línea en SQL Server 2005/2008 / R2. (Denali aporta algunas mejoras en las tablas con campos MAX, por lo que algunos índices se pueden rebuild en línea).

Sí, el optimizador de consultas puede adivinar cuántas filas caben en una página, si tiene muchos campos varchar que son más grandes de lo necesario, SQL Server puede adivinar internamente el número incorrecto de filas.

Para el performance, la respuesta es NO para la mayoría de los casos. Creo que puede analizar el performance desde el nivel de la aplicación: recostackr los datos, get los requisitos y luego hacer un análisis. El cuello de botella puede ser causado por código de aplicación, SQL o layout de esquema.