Supabase som Backend as a Service · Lektion

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.

Lektion 2 av 311 steg

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, UPDATE eller DELETE en 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- och JOIN-satser.
  • Var uppmärksam på den extra kostnaden för skrivoperationer och diskutrymme.
  • Använd EXPLAIN och EXPLAIN ANALYZE fö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!

Gratis att börja

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

  1. Avancerade SQL-frågor och joins
  2. Databasindexering för bättre prestanda
  3. Databasfunktioner och triggers
← Tillbaka till Supabase som Backend as a Service