Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/12/2011, 23:45
alditis
 
Fecha de Ingreso: diciembre-2011
Mensajes: 2
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Char (1) vs Smallint - PostgreSQL

Hola a todos, yo también tenía esta duda asi que hice unas pruebas con 1189534 registros en la tabla:

CREATE TABLE intento (
id serial NOT NULL,
caracter "char" DEFAULT 'a' NOT NULL,
entero smallint DEFAULT 1 NOT NULL,
CONSTRAINT intento_pk PRIMARY KEY(id)
) WITH OIDS;

En el campo caracter (char) ingresé los siguientes valores aleatoriamente:

a b c d e f g h i j k l m n o p q r s t u v w x y z


Y el campo entero (smallint) ingresé números de 1 al 26 aleatoriamente para que tenga la misma cantidad de valores posibles que en el campo caracter.

Creé un indice para cada campo e hice las consultas:

SELECT count(id) FROM intento WHERE caracter = 'b'
Registros: 45840
Tiempo: 249.943 ms

SELECT count(id) FROM intento WHERE entero = 24
Registros: 45845
Tiempo: 224.682 ms

Elegí 'b' y 24 pues tenían apróximadamente la misma cantidad de registros.

Hecha la prueba, optaría por elegir el smallint para registrar valores numéricos pequeños en lugar de usar su equivalencia en "char", ya que para mi caso, el espacio en la base de datos no es crítico en la aplicación que vengo desarrollando, pero sí la rapidez en obtener los resultados.

Cualquier comentario es bienvenido.

Saludos.