Wed, May 11, 2011 at 11:56:28AM -0400, Alvaro Herrera escribió: >Excerpts from Álvaro Hernández Tortosa's message of mié may 11 11:44:57 -0400 >2011: >> Wed, May 11, 2011 at 10:37:03AM -0500, Juan Manuel Acuña Barrera escribió: > >> >> Juan Manuel, con esta información no sé si es el caso, y a lo >> >> mejor me "tiro a la piscina" mucho, pero si la mayor parte de atributos >> >> son de tipo cve_obs_*, donde "*" es algo así como un "evento" o similar, >> >> y teniendo un atributo id como PK, entonces podrías tal vez construir >> >> una tabla del tipo: >> >> >> >> id FK, >> >> tipo_evento un domain de tipo enum o varchar, >> >> valor integer, >> >> PRIMARY KEY(id,tipo_evento) > >No sé, esto que sugieres es un esquema de tipo EAV lo cual normalmente >no es buena idea. Yo creo que la tabla original con 80 columnas puede >ser una buena solución al problema que tiene. > >Considera que cada registro tiene como 24 bytes de sobrecosto de >almacenamiento debido a las cabeceras de tupla. Si tienes 600000 >registros hay como 14 MB sólo en cabeceras de tupla, pero si tienes >600000 * 80 hay 47 MB en cabeceras. No necesariamente por ser cada >registro más corto será más "eficiente". > >En suma, si es más eficiente o no va a depender de los patrones de >acceso y de cómo estén ordenados los registros en la tabla (viz. >CLUSTER)
Bueno, como he dicho depende mucho del modelo de datos (que no conozco). Pero estando de acuerdo en el rendimiento, me preocupa inicialmente más el diseño, y si hay que añadir columnas para cada nuevo tipo de evento, el problema de mantenibilidad es bastante grande. No sabiendo seguro que va a existir un problema de rendimiento, prefiero optar por el diseño (y optimizar posteriormente si fuera necesario). En todo caso, insisto, depende mucho del modelo de datos, y yo no sé si los atributos son parte natural del registro o encajan más en un esquema tipo EAV. El número de datos NULL en todos estos atributos podría ser un buen indicador, ¿no crees? :) Saludos, Álvaro -- Álvaro Hernández Tortosa ----------- NOSYS Networked Open SYStems - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripción: http://www.postgresql.org/mailpref/pgsql-es-ayuda