Agradeceríamos tu ayuda para extender nuestras secciones en referencia a las ciencias informáticas.
Solución:
¿Cuáles son los beneficios de SQL Server de usar tipos de datos adecuados?
Si utiliza el tipo de datos correcto, su base de datos se adaptará mejor a su modelo y es más probable que sea eficiente tanto en términos de espacio como de velocidad. Corre el riesgo de que esta pregunta se cierre como “demasiado amplia” porque puede ser un tema bastante amplio.
Para tocar tus puntos más específicos:
SmallInt/TinyInt frente a entero regular
Los tipos más pequeños ocupan menos espacio, por lo que caben más filas en una página, lo que da como resultado que se ocupe menos espacio tanto en el disco como en la memoria. Por supuesto, si elige un tipo demasiado pequeño, su aplicación fallará. Considere también BIGINT
para cuando se necesiten valores superiores a 2.147.483.648 (o inferiores a -2.147.483.647).
La diferencia se multiplica cuando considera los índices: los tipos más grandes terminan en cualquier índice que cubra las columnas también.
Decimal (2) vs flotante
Hay una gran diferencia aquí. DECIMAL
(y su sinónimo NUMERIC
) son en realidad números enteros escalados que garantizan tener la precisión que especifique. Los números de coma flotante tienen sus usos, pero tenga mucho cuidado con ellos, ya que son solo aproximaciones debido a problemas de redondeo al convertir entre formas binarias y decimales; el ejemplo más común es 0.1+0.2, por lo general no será igual a 0.3. Consulte http://floating-point-gui.de/ entre muchas otras referencias para obtener detalles y ejecute esto para ver el efecto de primera mano:
SELECT CAST(0.1 AS FLOAT ) + CAST(0.2 AS FLOAT ), CASE WHEN CAST(0.1 AS FLOAT ) + CAST(0.2 AS FLOAT ) = 0.3 THEN 'OK' ELSE 'oops' END
SELECT CAST(0.1 AS DECIMAL(10,2)) + CAST(0.2 AS DECIMAL(10,2)), CASE WHEN CAST(0.1 AS DECIMAL(10,2)) + CAST(0.2 AS DECIMAL(10,2)) = 0.3 THEN 'OK' ELSE 'oops' END
Esencialmente: no usar FLOAT
a menos que sepas que es lo que necesitas.
Varchar(100) frente a char(100)
Los tipos de longitud variable son mucho más eficientes en términos de espacio, pero menos eficientes para procesar la CPU. Si utiliza (MAX)
es probable que se almacenen fuera de la página, lo que es menos eficiente nuevamente y evita que la compresión surta efecto si la usa en sus tablas. Si usa compresión de fila o página, sus tipos de longitud fija se convierten en longitud variable de todos modos pero mantiene la validación incorporada de longitud que puede ser útil para su modelo.
¿Realmente importará en estos días, con la informática moderna?
Respuesta corta: Sí.
Respuesta larga: ¡Yyyyyyyyeeeeeeeeeeeeesssssssssssss!
Las consideraciones pueden ser un poco diferentes con las CPU modernas: pueden ser mucho más rápidas en relación con el almacenamiento y la transferencia de red de lo que solían ser, por lo que suele ser una buena optimización para ahorrar espacio a expensas del tiempo adicional de la CPU, pero la elección del tipo correcto mucho todavía importa.
Aunque la elección del tipo es más importante para asuntos distintos a la optimización: los tipos correctos modelan mejor sus datos, lo que debería ser su primera prioridad.
La ventaja de utilizar el tipo adecuado es la MEMORIA que utiliza SQL Server para almacenar datos de este o aquel tipo.
TinyInt
– 1 byte (puede almacenar valores enteros 0-255)SmallInt
– 2 bytes (puede almacenar valores enteros -32,768 – 32,767)Int
– 4 bytes (puede almacenar valor entero -2^31 – 2^31 -1)BigInt
– 8 bytes (puede almacenar valor entero -2^63 – 2^63 -1)-
Varchar(n)
– puede almacenar cadenas con menos o igualn
simbolos Usará 1 byte para cada símbolo en su string.DECLARE @String varchar(100) = 'Hi' -- 2bytes DECLARE @String varchar(100) = 'Hello' -- 5bytes
-
char(n)
– puede almacenar cadenas con menos o igualn
simbolos usarán
bytes de memoria sin importar cuántos símbolos le pongas.DECLARE @String char(100) = 'Hi' -- 100bytes DECLARE @String char(100) = 'Hello' -- 100bytes
Puedes leer las diferencias sobre float
y decimal
tipos de datos aquí
Definitivamente importa incluso en estos días, incluso con la informática moderna. Supongo que va a importar durante mucho tiempo. El uso de tipos de datos adecuados puede ahorrarle MB
s. Incluso GB
a veces.
Echa un vistazo al artículo de Aaron Bertrand aquí.
Te aclarará las cosas.
Comentarios y calificaciones
Si tienes alguna perplejidad o capacidad de medrar nuestro crónica eres capaz de añadir una crónica y con gusto lo observaremos.