Valg af passende datatyper
Vælg de mest effektive datatyper til Deres kolonner for at minimere storageforbruget og optimere query-behandlingen.
Valg af passende datatyper er en gratis Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.
Hvorfor datatyper er vigtige
At vælge den korrekte datatype til dine kolonner i PostgreSQL er et grundlæggende trin i designet af en effektiv database.
Valget påvirker lagerplads, forespørgselsydeevne og dataintegritet. Den rigtige datatype sikrer, at dine data gemmes effektivt og behandles hurtigt.
Valg af heltalstyper
PostgreSQL tilbyder flere heltalstyper, som hver har en forskellig lagerstørrelse og et forskelligt værdiområde:
SMALLINT: 2 bytes, området -32.768 til +32.767INTEGER(ellerINT): 4 bytes, området -2.147.483.648 til +2.147.483.647BIGINT: 8 bytes, området -9.223.372.036.854.775.808 til +9.223.372.036.854.775.807
Vælg altid den mindste heltalstype, der sikkert kan gemme det forventede værdiområde, så du minimerer diskpladsen og forbedrer ydeevnen.
Demonstration af heltalstyper
Lad os se, hvordan forskellige heltalstyper defineres. Bemærk, hvordan vi vælger den mindste type, der passer til værdien.
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;Numerisk præcision
Når du arbejder med decimaltal, især pengebeløb, er præcision afgørende:
NUMERIC(p, s): Gemmer nøjagtige tal.per det samlede antal cifre (præcision), ogser antallet af cifre efter decimalpunktet (skala). Uundværlig til økonomiske data.REAL(4 bytes) ogDOUBLE PRECISION(8 bytes): Gemmer approksimerede flydende tal. De er hurtigere, men kan introducere meget små afrundingsfejl, så de er uegnede til penge.
Brug NUMERIC, når nøjagtighed er afgørende, og brug REAL eller DOUBLE PRECISION til videnskabelige eller mindre kritiske beregninger, hvor approksimation er acceptabel.
Valg af tekstlagring
Til lagring af tekststrenge tilbyder PostgreSQL:
VARCHAR(n): Tekststreng med variabel længde og en brugerdefineret maksimal længde pån. Hvis du prøver at indsætte en længere streng, bliver den afkortet, eller der opstår en fejl.TEXT: Tekststreng med variabel længde uden en eksplicit maksimal længde. Det er ofte det mest fleksible valg.CHAR(n): Tekststreng med fast længde. Hvis strengen er kortere endn, udfyldes den med mellemrum. Det frarådes generelt på grund af mulige problemer med ydeevnen og spild af plads.
I de fleste moderne applikationer foretrækkes VARCHAR (uden en længde, hvor den fungerer som TEXT) eller ganske enkelt TEXT på grund af fleksibiliteten og den effektive lagring.
VARCHAR kontra TEXT
Her er et eksempel, der viser VARCHAR med en længdebegrænsning og TEXT uden en sådan. Begge lagrer data effektivt ud fra den faktiske længde.
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;Håndtering af datoer og klokkeslæt
PostgreSQL tilbyder robuste dato- og klokkeslætstyper:
DATE: Gemmer kun datoen (år, måned, dag).TIME: Gemmer kun tidspunktet på dagen (time, minut, sekund, brøkdele af sekunder).TIMESTAMP: Gemmer dato og klokkeslæt. Den gemmer IKKE oplysninger om tidszone.TIMESTAMPTZ(TIMESTAMP WITH TIME ZONE): Gemmer dato og klokkeslæt og konverterer det til UTC ved lagring. Det er den anbefalede type til de fleste applikationer, så problemer med tidszoner undgås.
Foretræk altid TIMESTAMPTZ til tidsstempler for hændelser, medmindre du har en meget specifik grund til at lade være.
Specielle typer: boolesk værdi og UUID
To andre nyttige datatyper:
BOOLEAN: Gemmer sande/falske-værdier. Den er meget effektiv og kræver kun 1 byte lagerplads. PostgreSQL accepterer 'true', 'false', 't', 'f', '1', '0', 'yes', 'no' som input.UUID: Gemmer universelt entydige identifikatorer. Det er 128-bit-værdier, som er nyttige til at generere entydige primærnøgler uden belastning fra databasesekvenser, især i distribuerede systemer.
UUID-værdier kan genereres af PostgreSQL ved hjælp af funktioner som gen_random_uuid() fra udvidelsen pgcrypto.
Overhead ved typekonvertering
Selvom PostgreSQL ofte håndterer implicitte typekonverteringer (f.eks. konvertering af en streng '123' til et heltal), medfører det en ydeevneomkostning.
Når du sammenligner eller forbinder kolonner med forskellige datatyper, kan PostgreSQL være nødt til at udføre en konvertering på den ene eller begge sider. Det kan forhindre brugen af indekser og gøre forespørgsler langsommere.
Stræb altid efter at sammenligne og forbinde kolonner, der har identiske datatyper. Hvis en konvertering er nødvendig, skal du bruge eksplicit typekonvertering (f.eks. column::INTEGER), så det bliver tydeligt og nogle gange hjælper forespørgselsplanlæggeren.
Udfordring: datatyper
Forestil dig, at du designer en tabel til at gemme oplysninger om brugerregistrering. En kolonne skal gemme, om en bruger har bekræftet sin e-mail, og en anden skal gemme et entydigt, globalt identificerbart bruger-id, der kan genereres hvor som helst.
Opsummering af datatyper
Vi har gennemgået, hvor vigtigt det er at vælge passende datatyper af hensyn til ydeevne, lagerplads og integritet.
- Vælg den mindste heltalstype, der passer til dine data.
- Brug
NUMERICtil nøjagtige decimaltal (f.eks. penge). - Foretræk
TIMESTAMPTZtil lagring af datoer og klokkeslæt med tidszonebevidsthed. BOOLEANer bedst til sande/falske-flag, ogUUIDer bedst til globalt entydige identifikatorer.- Undgå unødvendige typekonverteringer for at bevare forespørgslers ydeevne.
Omhyggeligt valg af datatyper er en grundsten i effektiv databasedesign.
Lær SQL med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 22
- Lektioner
- 88
Ofte stillede spørgsmål
Er lektionen “Valg af passende datatyper” gratis?
Ja — alle 3 lektioner i læringssporet Ydelsesoptimering og optimering af forespørgsler i PostgreSQL, inklusive “Valg af passende datatyper”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Valg af passende datatyper”?
Vælg de mest effektive datatyper til Deres kolonner for at minimere storageforbruget og optimere query-behandlingen. Du øver dig i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Ydelsesoptimering og optimering af forespørgsler i PostgreSQL?
Der kræves ingen tidligere erfaring. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Valg af passende datatyper”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion?
Ja. Alle Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Afvejning mellem normalisering og denormalisering
- Valg af passende datatyper
- Partitionering af store tabeller
- Design af primærnøgler og surrogatnøgler