30/5/16

Ahorrar espacio en Teradata

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)

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...