Kyselyn suoritussuunnitelma

Vakaa versio tarkastettiin 14.8.2019 . Malleissa tai malleissa on vahvistamattomia muutoksia .

Kyselyn suoritussuunnitelma - toimintosarja, joka tarvitaan SQL - kyselyn  tuloksen saamiseksi relaatiotietokantajärjestelmässä .

Suunnitelma kokonaisuudessaan on jaettu kahteen vaiheeseen:

Lajittelu ja ryhmittely  on valinnainen vaihe, joka suoritetaan, jos pääsypolkuja ei löydy tuloksen saamiseksi pyydetyssä järjestyksessä.

Tulosten näytteenotto suoritetaan seuraavilla tavoilla:

Sisäkkäiset silmukat

Sisäkkäiset silmukat  ovat sisäkkäisiä iteratiivisia prosesseja tietojen etsimiseksi kustakin yhdistetystä taulukosta.

Ulompi silmukka hakee kaikki tarvittavat rivit ulkotaulukosta. Jos joitakin tai kaikkia ulomman taulukon rajoituksia voidaan käyttää indeksin läpi hakemiseen, silmukan jokaisessa iteraatiossa etsitään kaikkien tarvittavien rivien sijainti indeksistä ja suoritetaan suora pääsy taulukkoon. Muussa tapauksessa koko taulukko skannataan. Jäljellä olevia rajoja käytetään valittujen rivien suodattamiseen. Jokaiselle jäljellä olevalle riville kutsutaan sisäsilmukkaa.

Sisäsilmukka etsii rivejä sisäisestä taulukosta käyttämällä liitosehtoja ja ulkosilmukan tietoja. Jos joitakin tai kaikkia sisäisen taulukon rajoituksia sekä ulkoisesta silmukasta saatuja rajoituksia voidaan käyttää indeksin läpi hakemiseen, niin silmukan jokaisessa iteraatiossa etsitään kaikkien tarvittavien rivien paikat hakemisto ja suora pääsy taulukkoon suoritetaan. Muussa tapauksessa koko taulukko skannataan. Jäljellä olevia rajoja käytetään valittujen rivien suodattamiseen.

Silmukat voidaan upottaa mielivaltaisen määrän kertoja. Tässä tapauksessa sisäisestä silmukasta tulee seuraavan silmukan ulompi silmukka ja niin edelleen.

Jokaisessa syvimmän silmukan iteraatiossa taulukoista valitut rivit ketjutetaan, jotta saadaan yksi rivi lopputuloksesta.

Jos jollekin jaksolle suoritetaan indeksihaku ja kaikki indeksin sarakkeet ovat riittäviä lopullisen tuloksen saamiseksi, suoraa pääsyä taulukkoon ei suoriteta tässä jaksossa.

Fuusio

Jos yhdistettävillä taulukoilla on indeksit vertailtavissa kentissä, yhdistäminen voidaan suorittaa yhdistämällä . Molemmat indeksit tarkistetaan ja haetaan samoja arvoja. Jos indekseissä on tarpeeksi sarakkeita lopputuloksen saamiseksi, taulukoita ei lueta. Muussa tapauksessa yhdistettäviin taulukoihin päästään suoraan, jotta saadaan sarakkeita, jotka eivät sisälly indekseihin, mutta ovat välttämättömiä tuloksen saamiseksi.

Jos yhdistäminen ei riitä lopullisen tuloksen saamiseksi, kullekin yhdistämisellä saadulle riville voidaan suorittaa enintään kaksi sisäkkäisten silmukoiden sarjaa kullekin yhdistettävälle taulukolle.

Indekseihin lajiteltujen tietojen vuoksi yhdistäminen on halvempaa kuin sisäkkäiset silmukat, mutta toteutussuunnitelma ei voi alkaa yhdistämisellä.

Esimerkki

Esimerkiksi kyselylle, kuten:

VALITSE Myynnistä TILAA Myyjän_numeron mukaan

Tällainen toteutussuunnitelma voitaisiin luoda:

  1. Myynti -taulukon ensisijaisen avaimen klusteroitu indeksitarkistus .
  2. Lajittele vaiheen 1 tulokset sarakkeen Myyjän_numero mukaan .
  3. Palauta vaiheen 2 tulokset sovellukseen.

Kyselyn optimoija (DBMS:n komponentti) käyttää tietokantaan tallennettuja tilastotietoja taulukoineen ja indekseineen, joiden perusteella se arvioi vaihtoehtoisia tapoja tuottaa kyselytuloksia. Esimerkiksi SELECT-käskyn ORDER BY -komento voidaan suorittaa käyttämällä tietokannan indeksiä tai lajittelemalla rivit fyysisesti. Optimoija yrittää valita tehokkaimman kyselyn suoritussuunnitelman.

Tutkimalla optimoijan luomia kyselyn suoritussuunnitelmia voit päättää, miten kyselyn suorittamista nopeuttaa - muuttaa itse kyselyä tai luoda lisäindeksi tietokantaan. Jotkin DBMS-järjestelmät antavat sinun vaikuttaa nimenomaisesti siihen, kuinka optimoija tarkalleen luo suunnitelman, jolle on olemassa erityinen vihjekieli .

Katso myös

Kirjallisuus

Linkit