Hay un debate en el trabajo de mi esposa sobre el uso varchar(255)
de todos los varchar
campos en tablas temporales en procedimientos almacenados. Básicamente, un campamento quiere usar 255 porque siempre funcionará incluso si la definición cambia, y el otro campamento quiere quedarse con el tamaño en las tablas de origen para posibles mejoras de rendimiento.
¿Es correcto el campamento de rendimiento? ¿Hay otras implicaciones? Están usando SQL Server.
sql-server
performance
datatypes
temporary-tables
Brian Nickel
fuente
fuente
MAX()
en la mezcla.Respuestas:
Dependiendo de cómo esté utilizando sus tablas temporales, podría encontrarse con un problema de truncamiento de datos.
Este ejemplo es un poco artificial, pero ilustra mi punto. Ejemplo:
La tabla temporal aceptaría con gusto el nuevo valor varchar con una longitud de 59. Sin embargo, su tabla de usuario no pudo. Dependiendo de cómo maneje esto en su procedimiento, esto podría resultar en truncamiento o un error.
A menos que documente y explique estos problemas, su procedimiento podría funcionar de manera inesperada.
Personalmente, no creo que haya una respuesta a esta pregunta que sea correcta el 100% del tiempo. Realmente depende de cómo esté usando esas tablas temporales.
Espero que esto ayude
fuente
Me inclinaría hacia el uso de la longitud real del campo.
Leí recientemente que las tablas temporales de MySQL (supongo que SQL Server es similar) asignan suficiente memoria para almacenar la longitud máxima posible para cada
varchar
columna ... Un enfoque sistemático para asignar 200% -500% de la memoria requerida paravarchar
campos en todos Los procedimientos almacenados parecen un sorteo innecesario de recursos del sistema. Si alguna vez utiliza una cantidad significativa de memoria para crear estas tablas temporales, podría reclamar innecesariamente la memoria que estaba en uso para el almacenamiento en caché, creando más trabajo para el servidor en algún momento en el futuro, incluso después de que se hayan completado los procedimientos de almacenamiento.Editar: Vea la respuesta de Bill Karwin: /programming/1962310/importance-of-varchar-length-in-mysql-table
fuente