Gracias a todos por sus respuestas, en realidad puede que me haya adelantado a un problema pero lo cierto es que la tabla puede tener millones de registros y consultarla no debe demorar más de 200 milisegundos, estoy hablando de una tabla por precios diarios para tipos de habitación de un hotel por versión de tarifario existente, o sea que hay un registro diario por cada tipo habitación, versión de tarifario y la búsqueda utiliza los tres criterios de búsqueda (fecha, versión de tarifa, tipo de habitación)
Una vez que los datos se insertan, se actualizan muy poco y se puede consultar más o menos un millón de veces al día (aunque puede aumentar). Hice una prueba con Pg10 y particionado declarativo, particionado la tabla trimestralmente por fecha y creando un índice único en cada partición utilizando los tres criterios. Los resultados obtenidos en una máquina que no tiene buenas prestaciones fueron bastante buenos, por lo que espero que en un server dedicado y con muchas mejores prestaciones sea aún mejor. También quiero probar con particionado por herencia porque el declarativo no permite crear llaves primarias en la tabla particionada y puede que esta tabla sea referenciada desde otra tabla para temas de auditoría. Gracias a todos por sus consejos. Saludos. -----Mensaje original----- De: Jaime Casanova [mailto:jaime.casan...@2ndquadrant.com] Enviado el: lunes, 5 de febrero de 2018 07:15 p. m. Para: Lazaro Garcia CC: pgsql-es-ayuda Asunto: Re: Consulta de tabla con millones de registros 2018-01-29 15:17 GMT-05:00 Lazaro Garcia <lazaro3...@gmail.com>: > > Recientemente estoy trabajando en un sistema donde se tendrá una tabla > que puede contener millones de tuplas, por encima de los 50 millones y > el propósito de la tabla será almacenar precios de un producto por día > para cada uno de los clientes existentes. Sobre la tabla se ejecutarán > más lecturas que escrituras y las lecturas deben ser bien rápidas. > y cual es el problema? o te estás adelantando a la posibilidad de problemas? porque si es así recuerda que "la optimización adelantada es la raíz de todos los males" (cita de Donald Knuth) la realidad es que podrías tener problemas, o no... he visto, en el mismo sistema, una tabla de más de 700millones de registros que no se ha particionado y una tabla de 130millones que tuvo que ser particionada para que el sistema funcione. La pregunta es: como será el uso de la tabla? dices que habrán más escrituras que lecturas, eso es lo más común ahora puedes decir cuantas veces se actualizará el mismo registro? en que periodo de tiempo? como serán las consultas (sobre el PK, se leerá en rangos, rangos grandes o pequeños)? y los updates? -- Jaime Casanova www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services