sql >> Database teknologi >  >> RDS >> Oracle

Hvordan ved du, hvad et godt indeks er?

Det afhænger af, hvad du mener med 'god' og 'dårlig'. Dybest set skal du indse, at hvert indeks, du tilføjer, vil øge ydeevnen på enhver søgning efter den kolonne (så tilføjelse af et indeks til kolonnen 'efternavn' i en persontabel vil øge ydeevnen på forespørgsler, der har "hvor efternavn =" i dem), men mindske skriveydelsen på tværs af hele tabellen.

Årsagen til dette er, at når du tilføjer eller opdaterer en række, skal den tilføje til eller opdatere både selve tabellen og hvert indeks, som rækken er medlem af. Så hvis du har fem indekser på en tabel, skal hver tilføjelse skrive til seks steder - fem indekser og tabellen - og en opdatering kan i værste fald røre op til seks pladser.

Indeksoprettelse er da en balancegang mellem forespørgselshastighed og skrivehastighed. I nogle tilfælde, såsom en datamart, der kun er indlæst med data én gang om ugen i et job over natten, men forespørges tusindvis af gange dagligt, giver det rigtig god mening at overbelaste med indekser og fremskynde forespørgslerne så meget som muligt. I tilfælde af online transaktionsbehandlingssystemer vil du dog prøve at finde en balance mellem dem.

Så kort sagt, tilføj indekser til kolonner, der bruges meget i udvalgte forespørgsler, men prøv at undgå at tilføje for mange, og tilføj derfor de mest brugte kolonner først.

Derefter er det et spørgsmål om belastningstest for at se, hvordan ydeevnen reagerer under produktionsforhold, og en masse justeringer for at finde en acceptabel balance.



  1. Del forbindelse til postgres db på tværs af processer i Python

  2. Script alle data fra SQL Server-databasen

  3. Oracle JDBC ojdbc6 Jar som en Maven-afhængighed

  4. Gem SQLite-forespørgselsresultater i en tekstfil