Databasindexering för bättre prestanda
Förstå betydelsen av indexering, hur ni skapar effektiva index och analyserar frågeplaner för att förbättra databasens läsprestanda.
Databasindexering för bättre prestanda är en gratis lektion i Supabase som Backend as a Service på CoddyKit. Detta är lektion 2 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Supabase som Backend as a Service, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.
Förbättra databasens prestanda
Föreställ dig att du försöker hitta ett visst ämne i en enorm lärobok utan register. Du skulle bläddra igenom varje sida, eller hur?
- Databaser ställs inför en liknande utmaning när de hämtar data.
- Utan hjälp kan de behöva genomsöka varenda rad för att hitta det du behöver.
- I den här lektionen utforskar vi databasindexering: en kraftfull teknik som dramatiskt kan snabba upp datahämtningen.
Så fungerar index
Ett databasindex fungerar ungefär som registret i en bok. Det är en särskild uppslagstabell som databasens sökmotor kan använda för att snabba upp datahämtningen.
- Det innehåller en sorterad lista med värden från en eller flera kolumner.
- Varje värde pekar direkt på platsen för hela dataraden.
- Det gör att databasen snabbt kan hoppa till relevanta data i stället för att genomsöka hela tabellen.
När du bör använda index
Index är mest effektiva på kolumner som ofta används för:
- Filtrering (WHERE-satser): Hitta specifika rader snabbt.
- Sortering (ORDER BY-satser): Hämta data i en viss ordning på ett effektivt sätt.
- Join (JOIN-villkor): Matcha rader mellan tabeller snabbare.
Kolumner med hög kardinalitet (många unika värden) är i allmänhet bra kandidater.
Skapa ditt första index
Vi skapar en enkel tabell och lägger sedan till ett index för en av dess kolumner. Vi indexerar kolumnen email, som ofta kan användas vid uppslagningar.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
CREATE INDEX idx_users_email ON users (email);Påverkan på frågor
När indexet för email har skapats går en fråga som söker efter en användare via dennes e-postadress betydligt snabbare, särskilt i stora tabeller. Databasen kan nu använda indexet för att hitta raden direkt.
SELECT id, name FROM users WHERE email = 'alice@example.com';Indexeringens dolda kostnader
Även om index förbättrar läsprestandan medför de vissa avvägningar:
- Diskutrymme: Index kräver extra lagringsutrymme.
- Skrivöverhead: Varje gång du
INSERT,UPDATEellerDELETEen rad måste indexet också uppdateras. Det medför en liten prestandakostnad för skrivoperationer.
Överindexera inte! Indexera bara kolumner som faktiskt har nytta av det.
Introduktion till frågeplaner med EXPLAIN
Hur vet du om ditt index faktiskt används? PostgreSQL tillhandahåller kommandot EXPLAIN, som visar frågeplanen – alltså hur databasen planerar att köra din fråga.
- Det hjälper dig att förstå stegen som ingår och identifiera möjliga flaskhalsar.
- Det är avgörande när du optimerar komplexa frågor.
Så läser du ett enkelt EXPLAIN-resultat
När du kör EXPLAIN ska du leta efter termer som Seq Scan (sekventiell genomsökning, vilket betyder att inget index användes) jämfört med Index Scan (index användes).
EXPLAIN SELECT id, name FROM users WHERE email = 'bob@example.com';Fördjupning med EXPLAIN ANALYZE
Om du vill ha ännu mer information använder du EXPLAIN ANALYZE. Det visar inte bara den planerade körningen utan kör också faktiskt frågan och ger verklighetsbaserad statistik, bland annat körtid och antalet behandlade rader.
EXPLAIN ANALYZE SELECT id, name FROM users WHERE email = 'charlie@example.com';Kunskapskontroll: indexering
Du har lärt dig om databasindexering och hur du analyserar frågeplaner. Nu testar vi dina kunskaper.
Indexering för snabbhet: repetition
Bra jobbat! Du har lärt dig grunderna i databasindexering:
- Index förbättrar prestandan för
SELECT-frågor avsevärt. - De fungerar som registret i en bok och möjliggör snabba datauppslagningar.
- Skapa index för kolumner som används i
WHERE-,ORDER BY- ochJOIN-satser. - Var uppmärksam på den extra kostnaden för skrivoperationer och diskutrymme.
- Använd
EXPLAINochEXPLAIN ANALYZEför att förstå frågeplaner och verifiera att index används.
Att behärska indexering är avgörande för att bygga databasapplikationer med hög prestanda!
Lär dig Supabase som Backend as a Service med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 11
- Lektioner
- 40
Vanliga frågor
Är lektionen ”Databasindexering för bättre prestanda” gratis?
Ja – hela texten till ”Databasindexering för bättre prestanda” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Supabase som Backend as a Service, kan Ni uppgradera till CoddyKit PRO. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.
Vad lär jag mig i ”Databasindexering för bättre prestanda”?
Förstå betydelsen av indexering, hur ni skapar effektiva index och analyserar frågeplaner för att förbättra databasens läsprestanda. Ni övar på Supabase som Backend as a Service med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Supabase som Backend as a Service?
Du behöver inga förkunskaper. Utbildningen i Supabase som Backend as a Service på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 3.
Hur lång tid tar lektionen ”Databasindexering för bättre prestanda”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Supabase som Backend as a Service-lektionen?
Ja. Varje Supabase som Backend as a Service-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Avancerade SQL-frågor och joins
- Databasindexering för bättre prestanda
- Databasfunktioner och triggers