2009/8/17 Daniel Hernández <[email protected]> > > puedes crear la fecha al momento de la consulta: > > > > select * from pagos where (agno_pago||'-'||mes_pago||'-01')::date >= > > '2007-07-01'; > > Pero entonces dejarás de usar posibles índices en los campos de mes año. Me > parece mejor la solución de: > > SELECT * FROM pagos > WHERE (agno_pago = 2007 AND mes >= 7) > OR (agno_pago > 2007); > > Lo de las fechas tiene muchas soluciones según gustos. A algunos le gusta > descomponerlas en campos integer y manipularlos por separado con un índice > por > cada campo. A otros, les gusta usar campos date y si requieren valores > agrupados por mes, entonces crean un índice funcional para el mes, cosa de > no > perder eficiencia en las consultas (a mi la solución de los índices > funcionales me agrada). ¿Conocen algún estudio que discuta este tema? > Generalmente las tablas que usan fecha registran hechos, por lo que suelen > crecer bastante y requieren ser indexadas astutamente. Por allí se llega al > tema de los modelos de datos para consultas como los estrella o los copos > de > nieve, donde a veces usan una tabla de fechas. También se llega al asunto > de > si disponer usar tablas con orientación a filas o a columnas... aunque ahí > se > escapa un poco de Postgres, porque hasta donde se, no soporta orientación > de > columnas. > > Saludos, > > Yo uso solo estrella puedes hacer todo y es mas eficiente en termines de performance, ya que son datos tratados y desnormalizados , lo que generalmente se hace es crear una "dimension" con por ejemplo un siglo de fechas y luego cuando llega un registro obtienes el id de la fecha y eso se guarda en la tabla de "Facts" (sera actos en español supongo, no se como es la bibliografia en español) . En un principio parece un poco loco tener una tabla con las fechas asi pero cuando tienes que comenzar a hacer consultas en diferentes dimensiones temporales se soluciona bastante la vida (consultas por trimestre - semestre - dias - meses ...etc etc etc).
Slds Jc -- Cumprimentos jchavez linux User #397972 on http://counter.li.org/ Charles de Gaulle<http://www.brainyquote.com/quotes/authors/c/charles_de_gaulle.html> - "The better I get to know men, the more I find myself loving dogs."
