Begrens den maksimale størrelsen på indekserte data til 1c. Spesifikasjoner for bruk av indekseringsalternativet "Indeks med tilleggsbestilling". Indeksering med valgfri bestilling

eller

Hvorfor skal en 1C-utvikler "indeksere" registrere mål og detaljer?

– Vel, du har forespørsler! - sa databasen og hang ...

Det korte svaret på overskriftsspørsmålet er at dette vil tillate spørringer å bli utført raskt og redusere den negative effekten av blokkering på.

Hva er en indeks?

Optimalisering av indeksplassering

Hvis volumet av tabeller ikke tillater dem å "passe" inn i serverens RAM, kommer hastigheten til diskundersystemet (I/O) først. Og her kan du ta hensyn til muligheten til å plassere indekser i separate filer som ligger på forskjellige harddisker.

Detaljert beskrivelse av handlinger http: // technet.microsoft.com/ ru-ru/ bibliotek/ ms175905.aspx
Å bruke en indeks fra en annen filgruppe forbedrer ytelsen til ikke-klyngede indekser på grunn av parallelliteten mellom I/O og selve indeksen.
For dimensjonering kan du bruke behandlingen ovenfor.

Innvirkning av indekser på låser

Fraværet av den nødvendige indeksen for spørringen betyr iterasjon over alle postene i tabellen, noe som igjen fører til overdreven låsing, dvs. unødvendige poster blokkeres. I tillegg, jo lenger spørringen kjører på grunn av manglende indekser, desto lengre blir låsetidene.
En annen årsak til låser er det lille antallet poster i tabellene. I denne forbindelse bruker SQL Server, når du velger en plan for utførelse av spørringer, ikke indekser, men krysser hele tabellen (tabellskanning), og blokkerer hele. For å unngå slike låser er det nødvendig å øke antall poster i tabeller opp til 1500-2000. I dette tilfellet blir tabellskanning dyrere og SQL Server begynner å bruke indekser. Selvfølgelig kan dette ikke alltid gjøres, en rekke kataloger som "Organisasjoner", "Warehouses", "Underavdelinger", etc. har vanligvis få oppføringer. I disse tilfellene vil ikke indeksering forbedre ytelsen.

Indeks effektivitet

Vi har allerede bemerket i tittelen på denne artikkelen at vi er interessert i effekten av indekser på søkeytelse. Så, indekser er best egnet for følgende typer oppgaver:

  • Spørringer som spesifiserer "smale" søkekriterier. Slike søk bør bare lese et lite antall rader som oppfyller visse kriterier.
  • Spørringer som spesifiserer et verdiområde. Disse spørringene må også lese et lite antall rader.
  • Et søk som brukes i bindeoperasjoner. Kolonner, som ofte brukes som bindnøkler, er flotte for indekser.
  • Et søk som leser data i en bestemt rekkefølge. Hvis resultatdatasettet skal sorteres i rekkefølgen til den grupperte indeksen, er sorteringen unødvendig fordi resultatdatasettet allerede er sortert på forhånd. For eksempel, hvis den grupperte indeksen er opprettet på kolonner etternavn (etternavn), fornavn (fornavn), og applikasjonen krever sortering etter etternavn og deretter først, er det ikke nødvendig å legge til en ORDER BY-setning.

Men for all nytten av indekser, er det en veldig viktig MEN - indeksen skal brukes "effektivt" og skal tillate deg å finne data ved å bruke færre I/O-operasjoner og mengden systemressurser. Omvendt vil ubrukte (sjeldent brukte) indekser sannsynligvis redusere dataskrivehastigheten (siden hver operasjon som endrer dataene også må oppdatere indekssidene) og skape overflødig databaseplass.

Dekker(for en gitt forespørsel) kalles en indeks der det er alle nødvendige felt for denne forespørselen. For eksempel, hvis en indeks opprettes på kolonnene a, b og c, og SELECT-setningen ber om data fra kun disse kolonnene, er det kun nødvendig med tilgang til indeksen.

For å bestemme effektiviteten til indeksen kan vi grovt estimere ved å bruke en gratis nettjeneste som viser "plan for utførelse av spørringer" og indeksene som brukes.

Riktig bruk av indekser kan fremskynde spørringene ikke bare flere ganger, men hundrevis, noen ganger til og med tusenvis av ganger.

Denne typen akselerasjon er rett og slett ikke mulig med maskinvare. Derfor må dette temaet vies nøye oppmerksomhet.

Ofte, for å få fart på en spørring, må du lage din egen indeks, og du kan gjøre dette på flere forskjellige måter.

I videoopplæringene skal vi se på flere måter å lage en indeks på. Vi vil også vurdere situasjonen når indeksen for den nødvendige sammensetningen ikke kan opprettes ved hjelp av standard plattformverktøy, og den må opprettes i DBMS.

Sette opp indekser ved hjelp av standard plattformverktøy

Leksjonen viser hvilke indekser som faktisk opprettes for objekter på DBMS-nivå.
I dette emnet er ikke alt så åpenbart som det kan virke ved første øyekast. For en rekke objekter er det faktisk funksjoner for å lage indekser.
Vi vil vurdere alle nyansene i denne videoen.

Indeksering med valgfri bestilling

Videoen viser forskjellen mellom indeksbyggingsalternativet Indeks fra Indeks med tillegg. effektivisering.
Eksempelet viser hvilken indeks som vil bygges av plattformen ved bruk av tilleggsbestilling.

Opprette en indeks for registerdimensjoner

Indeksering av den første dimensjonen til registre har flere nyanser.
Videoen viser hvilke indekser som opprettes for registerdimensjoner. Situasjonen med å indeksere den første dimensjonen av registeret vurderes også.

I dag skal vi snakke om MS SQL-indekser og deres interne struktur. Jeg vil prøve å snakke om indekser både fra DBMS-synspunktet og fra 1C 8.3-synspunktet.

Indekser er et sett med lenker sortert etter spesifikke kolonner, laget for å optimalisere ytelsen til MS SQL DBMS.

Implisitt opprette indekser:

Plattformen lager indekser på egen hånd i henhold til datanøklene (referanse, kode, navn, dimensjoner osv.) kjent for hvert metadataobjekt.

Eksplisitt opprette indekser mulig på tre måter:

  1. Sette "Indeks"-flagget ved siden av feltet (variabel / dimensjon). Alternativet "Indeks med add. ved å bestille "legger til indeksen feltet" Kode "eller" Navn "(primært for).
  2. Legger til et felt i "".
  3. Spesifisere et indeksert felt i en spørring ved å bruke ""-konstruksjonen.

Få 267 1C videoopplæringer gratis:

Indekser i Microsoft SQL DBMS

Indekser i MS SQL DBMS er datasider på 8 KB hver. Til tross for at indekser er designet for å forbedre ytelsen til DBMS, har de visse ulemper - de tar opp diskplass og bremser DBMS for å skrive rader.

Typer indekser i MS SQL DBMS:

  1. Ikke-klyngede indekser- Slike indekser bygger ikke om tabeller, men organiserer bare lenker.
  2. Klyngede indekser er nødvendig for å bygge tabellen i samsvar med indeksen. Dataene sorteres for eksempel alfabetisk. Ikke gyldig for kolonner som skifter ofte. DBMS gjenoppbygger konstant tabellen fysisk på denne indeksen.
  3. Unike indekser- et slags "tillegg" for grupperte og ikke-klyngede indekser. En slik indeks er unik når det gjelder nøkkelfelt.

Nøkkeltyper i DBMS:

  • Primærnøkkel- et sett med kolonner som unikt karakteriserer raden.
  • Fremmednøkkel- et tabellfelt som lagrer verdien til primærnøkkelen med det formål å organisere forholdet mellom tabeller. 1C bruker ikke denne typen nøkler.

Viktige nyanser ved bruk av indekser