sql >> Base de Datos >  >> RDS >> PostgreSQL

Rendimiento de la base de datos:filtrado en columna frente a tabla separada

Este es un problema común en el diseño de bases de datos:la cuestión de separar o "archivar" los registros que ya no están "activos".

Los enfoques más comunes son:

  • Todo en una tabla, marque los pedidos como "completos" según corresponda. Pros:la solución más simple (tanto en código como en estructura), buena flexibilidad (por ejemplo, órdenes fáciles de "resucitar"). Contras:las tablas pueden volverse bastante grandes, un problema tanto para las consultas como para, p. copias de seguridad.
  • Archive las cosas viejas en una tabla separada. Resuelve los problemas desde el primer planteamiento, a costa de una mayor complejidad.
  • Usar tabla con partición basada en valores. Eso significa lógicamente (para la aplicación) que todo está en una tabla, pero detrás de escena, el DBMS coloca las cosas en áreas separadas según los valores en algunas columnas. Probablemente usaría la columna "completa" o la "fecha de finalización del pedido" para la partición.

El último enfoque combina las partes buenas de los dos primeros, pero necesita soporte en el DBMS y es más complejo de configurar.

Nota:

Las tablas que solo almacenan datos "archivados" se denominan comúnmente "tablas de archivo". Algunos DBMS incluso proporcionan motores de almacenamiento especiales para estas tablas (por ejemplo, MySQL), que están optimizados para permitir una recuperación rápida y una buena eficiencia de almacenamiento, a costa de cambios/inserciones lentos.