Vamos a ver algunos ejemplos de tipos de datos con los que podemos aprovechar espacio.
Punto importante puede ser el tipo de timestamp que
estamos guardando en una columna:
Es interesante tener en
cuenta la diferencia entre timestamp(6) y timestamp(0).
select CURRENT_TIMESTAMP(6)
|
25/05/2016 10:32:35.570000
|
select CURRENT_TIMESTAMP(0)
|
25/05/2016 10:32:35
|
Un ejemplo claro es una columna del tipo S / N, necesita 3 bytes como VARCHAR , pero sólo 1 byte como CHAR.
Podemos ver que en la
opción de timestamp(6) se esta almacenando también los milisegundos, rara vez
vamos a necesitar guardar dicho dato, por lo que si prescindimos de ellos
podemos ahorrar mucho espacio en base de datos.
Para pasar de timestamp(6) a timestamp(0)
Para pasar de timestamp(6) a timestamp(0)
CAST(CAST(FCH_REG_BBDD AS
DATE) AS
TIMESTAMP(0))
+ (CAST(FCH_REG_BBDD
AS TIME(6)) - TIME '00:00:00' HOUR TO SECOND)
Otro caso importante para ahorrar espacio en teradata puede
ser, a la hora de almacenar un carácter en una columna.
Nunca debes crear el
campo en teradata como varchar(1), siempre como char(1).
Un CHAR(n) necesita
exactamente n bytes (Latin) o n*2 (UNICODE) mientras que VARCHAR siempre
encesita 1 o 2 bytes para cada caracter almacenado, pero ademas necesita dos
bytes adicionales para una especie de cabecera, que indica la longitud total.
Nunca debes hacer VARCHAR(1) en Teradata.
... próximamente añadiremos mas opciones para ahorrar espacio...