sql >> Database teknologi >  >> RDS >> PostgreSQL

Databaseydelse:filtrering på kolonne i forhold til separat tabel

Dette er et almindeligt problem i databasedesign:Spørgsmålet om, hvorvidt man skal adskille eller "arkivere" poster, der ikke længere er "aktive".

De mest almindelige fremgangsmåder er:

  • Alt i én tabel, marker ordrer som "fuldførte" efter behov. Fordele:Enkleste løsning (både kode- og strukturmæssigt), god fleksibilitet (fx let at "genoplive" ordrer). Ulemper:Tabeller kan blive ret store, et problem både for forespørgsler og for f.eks. sikkerhedskopier.
  • Arkivér gamle ting til separat tabel. Løser problemerne fra den første tilgang på bekostning af større kompleksitet.
  • Brug tabel med værdibaseret partitionering. Det betyder logisk (for applikationen) at alt er i én tabel, men bag kulisserne placerer DBMS ting i separate områder afhængigt af værdien/værdierne på nogle kolonne(r). Du ville sandsynligvis bruge kolonnen "fuldstændig" eller "ordreafslutningsdatoen" til partitioneringen.

Den sidste tilgang kombinerer på en måde de gode dele af de to første, men har brug for support i DBMS og er mere kompleks at sætte op.

Bemærk:

Tabeller, der kun gemmer "arkiverede" data, omtales almindeligvis som "arkivtabeller". Nogle DBMS leverer endda specielle lagermotorer til disse tabeller (f.eks. MySQL), som er optimeret til at tillade hurtig hentning og god lagereffektivitet på bekostning af langsomme ændringer/indsættelser.



  1. Database backup kryptering - bedste praksis

  2. Oracle ændre tabel utilstrækkelige privilegier

  3. PHP &MySQL Hvordan man viser kategorier i alle underkategorier fra databasen

  4. Overlappende datointerval MySQL