2009-08-26 13 views
7

¿Cuáles son los buenos tamaños para los tipos de datos en SQL Server? Al definir columnas, veo tipos de datos con tamaños de 50 como uno de los tamaños predeterminados (por ejemplo: nvarchar (50), binary (50)). ¿Cuál es el significado de 50? Estoy tentado de usar tamaños de poderes de 2, ¿es mejor o simplemente inútil?¿Los tipos de datos deben ser tamaños de potencias de 2 en SQL Server?

Actualización 1 Muy bien, gracias por su entrada chicos. Solo quería saber la mejor forma de definir el tamaño de un tipo de datos para una columna.

Respuesta

4

La razón por la que muchos campos tienen una longitud de 50 es que los valores por defecto de SQL Server a 50 como la duración de la mayoría de los tipos de datos donde la longitud es un problema.

Como se ha dicho, la longitud de un campo debe ser adecuada para los datos que se almacenan allí, sobre todo porque hay un límite en la longitud de un solo registro en SQL Server (es ~ 8000 bytes). Es posible superar ese límite.

Además, la longitud de sus campos se puede considerar parte de su documentación. No sé cuántas veces me he encontrado con programadores perezosos que afirman que no necesitan documentar porque el código se documenta automáticamente y luego no se molestan en hacer las cosas que harían que el código se documente.

3

El tamaño de un campo debe ser adecuado para los datos que está planeando almacenar allí, los valores predeterminados globales no son una buena idea.

2

Esto depende totalmente de lo que está almacenando. Si necesita x caracteres, use x no una cantidad arbitrariamente predefinida.

6

No hay ninguna razón para usar potencias de 2 para el rendimiento, etc. La longitud de los datos debe estar determinada por el tamaño de los datos almacenados.

5

¿Por qué no a los poderes tradicionales de 2, menos de 1 por ejemplo, 255 ...

En serio, la longitud debe coincidir con lo que necesita y es adecuado para sus datos.

Ninguna otra cosa: cómo el cliente usa, se alinea al límite de palabra de 32 bits, las potencias de 2, cumpleaños, ascendente Escorpión en Urano, rollo de los dados ...

2

Es una buena idea que toda la fila única en la página varias veces sin dejar demasiado espacio libre.

Una fila no puede abarcar dos páginas, una página tiene 8096 bytes de espacio libre, por lo que dos filas que ocupen 4049 bytes ocuparán cada una dos páginas.

Consulte docs para saber cómo calcular el espacio ocupado por una fila.

También tenga en cuenta que VAR en VARCHAR y VARBINARY significa "variable", por lo que si se pone un valor 1 -byte en una columna 50 -byte, tomará pero 1 bytes.

4

No ganarás nada con el uso de potencias de 2. Realiza los campos todo el tiempo que las necesidades de tu negocio realmente lo requieran: deja que SQL Server se encargue del resto. Además, dado que el tamaño de página de SQL Server está limitado a 8K (de los cuales 8060 bytes están disponibles para los datos de usuario), hacer cadenas de longitud variable lo más pequeña posible (pero siempre que sea necesario, desde la perspectiva de requisitos) un plus

Ese límite 8K es una configuración fija del sistema SQL Server que no se puede cambiar.

Por supuesto, SQL Server actualmente puede manejar más de 8K de datos en una fila, usando las llamadas páginas de "desbordamiento", pero es menos eficiente, por lo que tratar de mantenerse dentro de los 8K generalmente es una buena idea.

Marc

Cuestiones relacionadas