Geschikte gegevenstypen kiezen
Selecteer de efficiëntste gegevenstypen voor uw kolommen om opslag te minimaliseren en queryverwerking te optimaliseren.
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.767INTEGER(ofINT): 4 bytes, bereik -2.147.483.648 tot +2.147.483.647BIGINT: 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.pis het totale aantal cijfers (precisie) ensis het aantal cijfers achter de komma (schaal). Dit is essentieel voor financiële gegevens.REAL(4 bytes) enDOUBLE 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 lengten. 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 dann, 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
NUMERICvoor exacte decimale waarden, zoals geldbedragen. - Geef de voorkeur aan
TIMESTAMPTZvoor het opslaan van datums en tijden met tijdzone-informatie. BOOLEANis het meest geschikt voor waar/onwaar-vlaggen enUUIDvoor 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.
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
- Afwegingen tussen normalisatie en denormalisatie
- Geschikte gegevenstypen kiezen
- Grote tabellen partitioneren
- Primaire en surrogaatsleutels ontwerpen