Spørreoptimalisering
Den spørreoptimalisering er en operasjon der flere kjøring planer for en spørring SQL blir undersøkt for å velge det beste.
Anslaget for kostnadene avhenger av gjennomføringstiden og antall ressurser som brukes for å oppnå dem, det måles i input-output . Vanligvis er dyre ressurser CPU- bruk , størrelse og varighet på buffere på harddisken, og forbindelsene mellom parallellitetsenheter. Flere DBMS-er som Oracle og MySQL har funksjoner som gjør det mulig å utføre disse beregningene via en optimizer.
Det er to typer optimalisering:
- Den logiske gjennomføringsplanen (PEL), som avhenger av relasjonsalgebra .
- Den fysiske utførelsesplanen (PEP) som tar hensyn til indeksene og størrelsen på dataene.
Prinsipper
Generelt anbefales det å utføre ved å redusere prioriteten i spørrespråket :
- De valgene , for å redusere mer data i minnet. Så vidt mulig bør jokertegn (*) unngås som forårsaker mer overføring av informasjon i nettverket (f.eks. ID eller unødvendige oppdateringsdatoer).
- De fremspring , alltid å redusere størrelsen av dataene.
- Sortering, for å få raskere sammenføyninger .
- Blir med. De forskjellige gjennomføringsplanene som er undersøkt, består av de forskjellige tilgangsstiene (f.eks. Tilgang til primære og sekundære indekser) og en rekke tilknytningsteknikker, avhengig av tipsene :
-
sorter fusjon ( slå sammen )
-
hash ( hash join )
- nestet loop ( nestet loop join )
-
produkt ( produktsammenføyning ).
På samme måte, hvis rekkefølgen på forholdene i WHEREaldri endrer det oppnådde resultatet, kan det imidlertid ha en betydelig innvirkning på ytelsen. Det er faktisk å foretrekke fremfor:
- Plasser forholdene som filtrerer flest poster før de andre (dette krever vanligvis å vite den aktuelle størrelsen på tabellene).
- Sjekk bruken av nøkkelordet BETWEEN, som kan forbruke flere ressurser ved å hente fragmenterte byte på disken, enn en sekvensiell tabellskanning.
- Forsikre deg om at de LIKEikke kan byttes ut av =.
- Forsikre deg om at CURSOR( in ) ikke kan byttes ut.
Merknader og referanser
-
Datavitenskap : Fra første ordenslogikk til nettet , Serge Abiteboul
-
(in) Ken Henderson , The Guru's Guide to Transact-SQL , Addison-Wesley Professional,23. februar 2000( les online )
-
(in) Kevin Kline , SQL in a Nutshell: A Desktop Quick , O'Reilly Media, Inc.,2004( les online )
Se også
Relaterte artikler
Eksterne linker