sql >> Databasteknik >  >> RDS >> PostgreSQL

Databasprestanda:filtrering på kolumn kontra separat tabell

Detta är ett vanligt problem inom databasdesign:Frågan om man ska separera eller "arkivera" poster som inte längre är "aktiva".

De vanligaste tillvägagångssätten är:

  • Allt i en tabell, markera beställningar som "kompletta" efter behov. Fördelar:Enklaste lösningen (både kod- och strukturmässigt), bra flexibilitet (t.ex. lätt att "återuppliva" beställningar). Nackdelar:Tabeller kan bli ganska stora, ett problem både för frågor och för t.ex. säkerhetskopior.
  • Arkivera gamla saker till separat tabell. Löser problemen från det första tillvägagångssättet, till priset av större komplexitet.
  • Använd tabell med värdebaserad partitionering. Det betyder logiskt (för applikationen) att allt finns i en tabell, men bakom kulisserna placerar DBMS saker i separata områden beroende på värdet/värdena i vissa kolumner. Du skulle förmodligen använda kolumnen "komplett" eller "beställningens slutdatum" för partitioneringen.

Det sista tillvägagångssättet kombinerar de goda delarna av de två första, men behöver stöd i DBMS och är mer komplext att ställa in.

Obs:

Tabeller som endast lagrar "arkiverade" data kallas vanligtvis för "arkivtabeller". Vissa DBMS tillhandahåller till och med speciella lagringsmotorer för dessa tabeller (t.ex. MySQL), som är optimerade för att möjliggöra snabb hämtning och god lagringseffektivitet, till priset av långsamma ändringar/insättningar.



  1. MySQL grupperar resultat efter tidsperioder

  2. Mappa en Entity-klass till två olika databaser (Oracle och Ingres)

  3. RDS-instans CPU-användning

  4. Hur man hittar alla tabeller med Identity Column i SQL Server Database - SQL Server / T-SQL Tutorial Del 45