Se me fue directo... ahora CC: a la lista...
---------- Forwarded message ---------- From: Jaime Casanova <ja...@2ndquadrant.com> Date: 2011/5/10 Subject: Re: [pgsql-es-ayuda] excepcion en SELECT * To: Juan Manuel Acuña Barrera <gps...@gmail.com> 2011/5/10 Juan Manuel Acuña Barrera <gps...@gmail.com>: > El 10/05/2011, a las 10:25, Álvaro Hernández Tortosa escribió: > >> Tue, May 10, 2011 at 10:07:46AM -0500, Juan Manuel Acuña Barrera escribió: >> >>>> Estoy de acuerdo, suele ser muestra de diseño no normalizado >>>> (aunque tener muchas columnas no es condición suficiente de diseño no >>>> normalizado, claro) y, dependiendo de algunos factores, puede llevar a >>>> un menor rendimiento. >>> >>> Para tenerlo como referencia, cuantas son _muchas_ columnas en postgresql? >>> 50? 100? 500? >> >> Bueno... no creo que haya un número que lo determine. Se trata >> de que esté normalizado, no de que tenga pocas columnas. Así que depende >> mucho de los datos que se están modelizando. No me atrevería a dar una >> cifra... pero como referencia el límite de columnas en una tabla en >> postgresql oscila entre 250 y 1600, dependiendo de los tipos de datos >> usados... y para mí estos deberían ser límites que nunca se alcanzaran >> en casos normales... > > Bien, me quedo mucho más tranquilo, creo que la tabla más grande que tengo es > de como unas 80 columnas, y ya sentía que eran muchas. > Veamos... asumamos que todas esas 80 columnas son tipo integer por lo que usarian 4bytes c/u. El tamaño de la fila promedio en esa tabla (asumiendo que no hay nulos) seria: (80*4)+(una cabecera que me parece es de 24 bytes) = 344 bytes por registro Lo que significa que en una pagina de disco de 8kb almacenaras hasta: 23 registros por pagina. Si es una tabla mediana, digamos 1millon de registros, y quieres obtener el 10% de la tabla en un select (esto serian 100000 registros) tendrias que leer al menos: 4348 paginas de disco (y esto asumiendo que los registros estan grabados de forma secuencial y que no tienes tuplas muertas) Esto que significa? depende... depende de la velocidad de tu disco, depende de cuantas paginas de disco lee el SO en cada operacion de entrada/salida, etc. Ahora, considera la situacion en tu caso en que no todos los campos son enteros (algunos seran timestamp, 8 bytes; algunos seran de longitud variable, etc). Tambien considera el tamaño de la tabla (numero de registros) y el uso de la misma, por ejemplo una tabla de parametros no se usa mucho asi que no importara mucho pero una tabla que con una cantidad considerable de registros y que se consulte con mucha frecuencia no me gustaria que tenga 80 columnas... claro que ese es mi criterio personal... -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte y capacitación de PostgreSQL -- Jaime Casanova www.2ndQuadrant.com Professional PostgreSQL: Soporte y capacitación de PostgreSQL - 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