sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan man beslutter, hvornår brug indeks på tabel kolonne

Generelt vil min indekseringsstrategi være noget som denne (jeg bruger udelukkende SQL Server indtil videre - tilpas dit eget databasesystem efter behov):

  • vælg en vare klyngenøgle - ikke en GUID, ikke en VARCHAR(250) eller noget - en god klyngenøgle er smal, unik, stabil, stadigt stigende - noget som en INT IDENTITY er perfekt. Gør dette til din klyngede primærnøgle -> giver dig dit første indeks på bordet

  • for enhver kolonne, der bliver brugt som en fremmednøgle til en anden tabel - tilføj et indeks. Det kan enten være et enkelt kolonneindeks - eller det kan være et sammensat indeks - hvad der passer bedst til din sag. Det er vigtigt, at kolonnen med fremmednøgle er den første kolonne i det indeks (hvis du bruger et sammensat indeks) - ellers er fordelene ved JOIN 's eller til kontrol af referenceintegritet vil ikke være tilgængelig for dit system

Og det er det for nu.

Derefter:Kør dit system - observer og mål - opret en baseline. Er appen hurtig nok? Hvis ja -> er du færdig - gå hjem og nyd din fritid.

Hvis ikke:så begynd at indsamle data og indikationer på, hvorfor appen ikke er hurtig nok. Se på f.eks. ting som DMV'erne i SQL Server, der fortæller dig om de dårligst ydende forespørgsler, eller den manglende indeks DMV . Analyser dem. Se, hvad du kan forbedre. Tilføj et indeks ad gangen og igen:observer, mål, sammenlign med din baseline.

Hvis du har forbedring -> lad det indeks være på plads, og denne måling er din nye baseline. Skyl og gentag, indtil du (og dine brugere) er tilfredse med appens ydeevne (og gå hjem og nyd din fridag).

Overindeksering i SQL Server kan være værre end ikke at have nogen indekser. Start ikke med for mange indeks til at begynde med! Opret kun godt klyngede PK og udenlandsk nøgle, ikke-klyngede indekser - det er alt - så observer, mål, optimer og gentag denne cyklus.



  1. hvordan man indsætter flere rækker i sqlite android

  2. Hvordan sprogindstillinger kan påvirke dine FORMAT()-resultater i SQL Server (T-SQL-eksempler)

  3. Hvordan læser man billeder fra MySQL-database ved hjælp af PHP?

  4. Find tabelnavn i alle objekter i alle databaser