sql >> Database >  >> RDS >> PostgreSQL

Databaseprestaties:filteren op kolom versus afzonderlijke tabel

Dit is een veelvoorkomend probleem bij het ontwerpen van databases:de vraag of records die niet langer "actief" zijn, gescheiden of "gearchiveerd" moeten worden.

De meest voorkomende benaderingen zijn:

  • Alles in één tabel, markeer de bestellingen indien van toepassing als 'volledig'. Voordelen:Eenvoudigste oplossing (zowel code- als structuurgewijs), goede flexibiliteit (bijvoorbeeld eenvoudig te "herleven" bestellingen). Nadelen:tabellen kunnen behoorlijk groot worden, een probleem zowel voor vragen als voor b.v. back-ups.
  • Archiveer oude dingen om de tafel te scheiden. Lost de problemen op vanaf de eerste benadering, ten koste van een grotere complexiteit.
  • Gebruik een tabel met op waarden gebaseerde partitionering. Dat betekent logischerwijs (voor de toepassing) dat alles in één tabel staat, maar achter de schermen plaatst het DBMS dingen in aparte gebieden, afhankelijk van de waarde(n) in sommige kolom(men). U zou waarschijnlijk de kolom "compleet" of de "voltooiingsdatum van de bestelling" gebruiken voor de partitionering.

De laatste benadering combineert de goede delen van de eerste twee, maar heeft ondersteuning nodig in het DBMS en is complexer om in te stellen.

Opmerking:

Tabellen waarin alleen "gearchiveerde" gegevens zijn opgeslagen, worden gewoonlijk "archieftabellen" genoemd. Sommige DBMS bieden zelfs speciale opslagengines voor deze tabellen (bijv. MySQL), die zijn geoptimaliseerd voor snel ophalen en een goede opslagefficiëntie, ten koste van langzame wijzigingen/invoegingen.



  1. Wat is de tekenreeksaaneenschakelingsoperator in Oracle?

  2. MySQL Server is verdwenen bij het importeren van een groot sql-bestand

  3. Groovy/Grails kan oracle.jdbc.driver.OracleDriver niet laden

  4. Veilige manier om coderingssleutels op te slaan - PHP