Prestaties en queryoptimalisatie in PostgreSQL · Les

Geschikte gegevenstypen kiezen

Selecteer de efficiëntste gegevenstypen voor uw kolommen om opslag te minimaliseren en queryverwerking te optimaliseren.

Les 2 van 411 stappen

Geschikte gegevenstypen kiezen is een gratis Prestaties en queryoptimalisatie in PostgreSQL-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Prestaties en queryoptimalisatie in PostgreSQL. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Prestaties en queryoptimalisatie in PostgreSQL bevat in totaal 4 lessen.

Waarom gegevenstypen belangrijk zijn

Het juiste gegevenstype voor uw kolommen in PostgreSQL kiezen is een fundamentele stap bij het ontwerpen van een efficiënte database.

Dit heeft invloed op opslag, queryprestaties en gegevensintegriteit. Met het juiste type worden uw gegevens efficiënt opgeslagen en snel verwerkt.

Gehele-getaltypen kiezen

PostgreSQL biedt verschillende gehele-getaltypen, elk met een andere opslaggrootte en een ander waardebereik:

  • SMALLINT: 2 bytes, bereik -32.768 tot +32.767
  • INTEGER (of INT): 4 bytes, bereik -2.147.483.648 tot +2.147.483.647
  • BIGINT: 8 bytes, bereik -9.223.372.036.854.775.808 tot +9.223.372.036.854.775.807

Kies altijd het kleinste gehele-getaltype waarmee u het verwachte waardebereik veilig kunt opslaan, om schijfruimte te besparen en de prestaties te verbeteren.

Demonstratie van gehele-getaltypen

We bekijken hoe verschillende gehele-getaltypen worden gedefinieerd. Let op hoe we het kleinste type kiezen dat bij de waarde past.

CREATE TABLE product_counts (
  small_count SMALLINT,
  medium_count INTEGER,
  large_count BIGINT
);

INSERT INTO product_counts (small_count, medium_count, large_count)
VALUES (100, 50000, 1000000000);

SELECT * FROM product_counts;

Numerieke precisie

Bij het werken met decimale getallen, vooral geldbedragen, is nauwkeurigheid essentieel:

  • NUMERIC(p, s): Slaat exacte getallen op. p is het totale aantal cijfers (precisie) en s is het aantal cijfers achter de komma (schaal). Dit is essentieel voor financiële gegevens.
  • REAL (4 bytes) en DOUBLE PRECISION (8 bytes): Slaan benaderde getallen met drijvende komma op. Ze zijn sneller, maar kunnen kleine afrondingsfouten veroorzaken, waardoor ze ongeschikt zijn voor geldbedragen.

Gebruik NUMERIC wanneer exacte waarden essentieel zijn; gebruik REAL of DOUBLE PRECISION voor wetenschappelijke of minder kritieke berekeningen waarbij benadering acceptabel is.

Keuzes voor tekstopslag

Voor het opslaan van teksttekenreeksen biedt PostgreSQL het volgende:

  • VARCHAR(n): Een tekenreeks met variabele lengte en een door de gebruiker ingestelde maximale lengte n. Als je een langere tekenreeks probeert in te voegen, wordt deze afgekapt of treedt er een fout op.
  • TEXT: Een tekenreeks met variabele lengte zonder expliciete maximale lengte. Dit is vaak de meest flexibele keuze.
  • CHAR(n): Een tekenreeks met vaste lengte. Als de tekenreeks korter is dan n, wordt deze aangevuld met spaties. Dit wordt over het algemeen afgeraden vanwege mogelijke prestatieproblemen en verspilling van opslagruimte.

Voor de meeste moderne toepassingen hebben VARCHAR (zonder lengte, en daarmee werkend als TEXT) of simpelweg TEXT de voorkeur vanwege hun flexibiliteit en efficiënte opslag.

VARCHAR versus TEXT

Hier zie je een voorbeeld van VARCHAR met een lengtebeperking en TEXT zonder lengtebeperking. Beide slaan gegevens efficiënt op op basis van de werkelijke lengte.

CREATE TABLE messages (
  short_msg VARCHAR(50),
  long_msg TEXT
);

INSERT INTO messages (short_msg, long_msg)
VALUES ('Hello World', 'This is a much longer message that can span multiple lines and characters.');

SELECT short_msg, LENGTH(short_msg), long_msg, LENGTH(long_msg) FROM messages;

Datums en tijden verwerken

PostgreSQL biedt robuuste typen voor datums en tijden:

  • DATE: Slaat alleen de datum op (jaar, maand, dag).
  • TIME: Slaat alleen het tijdstip op (uur, minuut, seconde, fracties van een seconde).
  • TIMESTAMP: Slaat datum en tijd op. Dit type slaat GEEN informatie over de tijdzone op.
  • TIMESTAMPTZ (TIMESTAMP WITH TIME ZONE): Slaat datum en tijd op en converteert deze bij het opslaan naar UTC. Dit is voor de meeste toepassingen het aanbevolen type om problemen met tijdzones te voorkomen.

Geef voor tijdstempels van gebeurtenissen altijd de voorkeur aan TIMESTAMPTZ, tenzij je een zeer specifieke reden hebt om dat niet te doen.

Speciale typen: Boolean en UUID

Twee andere nuttige gegevenstypen:

  • BOOLEAN: Slaat waarheidswaarden op: waar of onwaar. Dit type is zeer efficiënt en gebruikt slechts 1 byte opslagruimte. PostgreSQL accepteert 'true', 'false', 't', 'f', '1', '0', 'yes' en 'no' als invoer.
  • UUID: Slaat universeel unieke identificatoren op. Dit zijn waarden van 128 bits, die nuttig zijn voor het genereren van unieke primaire sleutels zonder conflicten tussen databasesequenties, vooral in gedistribueerde systemen.

UUIDs kunnen door PostgreSQL worden gegenereerd met functies zoals gen_random_uuid() uit de extensie pgcrypto.

Overhead bij typeconversie

Hoewel PostgreSQL vaak impliciete typeconversies uitvoert (bijvoorbeeld door een tekenreeks '123' naar een geheel getal te converteren), brengt dit prestatiekosten met zich mee.

Wanneer je kolommen met verschillende gegevenstypen vergelijkt of samenvoegt, moet PostgreSQL mogelijk aan een of beide kanten een conversie uitvoeren. Daardoor kunnen indexen mogelijk niet worden gebruikt en worden zoekopdrachten trager.

Vergelijk en voeg altijd kolommen samen die identieke gegevenstypen hebben. Als een conversie nodig is, gebruik dan expliciete typecasting (bijvoorbeeld column::INTEGER) om dit duidelijk te maken en de queryplanner soms te helpen.

Uitdaging: gegevenstypen

Stel je voor dat je een tabel ontwerpt om registratiegegevens van gebruikers op te slaan. Eén kolom moet opslaan of een gebruiker zijn e-mailadres heeft geverifieerd, en een andere kolom moet een unieke, wereldwijd herkenbare gebruikers-ID opslaan die overal kan worden gegenereerd.

Samenvatting van gegevenstypen

Je hebt geleerd hoe belangrijk het is om geschikte gegevenstypen te kiezen voor prestaties, opslag en gegevensintegriteit.

  • Kies het kleinste type voor gehele getallen dat bij je gegevens past.
  • Gebruik NUMERIC voor exacte decimale waarden, zoals geldbedragen.
  • Geef de voorkeur aan TIMESTAMPTZ voor het opslaan van datums en tijden met tijdzone-informatie.
  • BOOLEAN is het meest geschikt voor waar/onwaar-vlaggen en UUID voor wereldwijd unieke identificatoren.
  • Vermijd onnodige typeconversies om de prestaties van zoekopdrachten op peil te houden.

Een zorgvuldige keuze van gegevenstypen vormt de basis van efficiënt databaseontwerp.

Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
22
Lessen
88

Veelgestelde vragen

Is de les “Geschikte gegevenstypen kiezen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Prestaties en queryoptimalisatie in PostgreSQL, waaronder “Geschikte gegevenstypen kiezen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Prestaties en queryoptimalisatie in PostgreSQL bevat in totaal 4 lessen.

Wat leer ik in “Geschikte gegevenstypen kiezen”?

Selecteer de efficiëntste gegevenstypen voor uw kolommen om opslag te minimaliseren en queryverwerking te optimaliseren. Je oefent met Prestaties en queryoptimalisatie in PostgreSQL door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Prestaties en queryoptimalisatie in PostgreSQL te beginnen?

Ervaring vooraf is niet nodig. Prestaties en queryoptimalisatie in PostgreSQL op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Geschikte gegevenstypen kiezen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Prestaties en queryoptimalisatie in PostgreSQL?

Ja. Elke les over Prestaties en queryoptimalisatie in PostgreSQL bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Afwegingen tussen normalisatie en denormalisatie
  2. Geschikte gegevenstypen kiezen
  3. Grote tabellen partitioneren
  4. Primaire en surrogaatsleutels ontwerpen
← Terug naar Prestaties en queryoptimalisatie in PostgreSQL