Paranna SQL-kyselyn suorituskykyä MSSQL: llä. Tässä informatiivisessa oppaassa opit optimoimaan kyselysi tehokkuuden ja nopeuden saavuttamiseksi.

Optimoimattomat Microsoft SQL Serverin (MSSQL) SQL-kyselyt voivat johtaa huonompaan suorituskykyyn, resurssien liikakäyttöön, epäjohdonmukaisiin tietoihin, tietoturvapuutteisiin ja ylläpitoongelmiin. Nämä ongelmat voivat vaikuttaa ohjelman toimivuuteen, luotettavuuteen ja turvallisuuteen, mikä voi turhauttaa käyttäjiä ja maksaa sinulle enemmän rahaa.

SQL-kyselyiden optimointi MSSQL: ssä on ratkaisevan tärkeää tehokkaan ja nopean suorituskyvyn saavuttamiseksi. Ottamalla käyttöön tekniikoita, kuten indeksointia, kyselyjen yksinkertaistamista ja tallennusmenettelyjä, käyttäjät voivat tasapainottaa kyselyn suorituskykyä ja tietojen muokkaustehoa, mikä parantaa lopulta koko tietokantaa esitys.

Kyselyn optimointi indeksoinnin avulla

Tietokannan indeksointi järjestää ja lajittelee tiedot tietokantataulukoihin nopeuttaakseen ja tehostaakseen hakua. Indeksointi luo kopiot tiedoista taulukoihin ja lajittelee ne niin, että

tietokantamoottori voi navigoida niissä helposti.

Kun kyselyä suoritetaan, tietokantakone käyttää indeksiä löytääkseen tarvittavat tiedot ja palauttaa nopeasti tulokset, mikä nopeuttaa kyselyn suoritusaikaa. Ilman indeksointia tietokantakoneen täytyy skannata kaikki taulukon rivit löytääkseen tarvittavat tiedot, mikä voi olla aikaa ja resursseja, etenkin suurille taulukoille.

Indeksin luominen MSSQL: ssä

Indeksin luominen relaatiotietokantoihin on helppoa, ja MSSQL: ää ei unohdeta. Voit käyttää LUO HAKEMISTO lauseke indeksin luomiseksi MSSQL: ssä.

LUODAINDEKSI indeksin_nimi
ON taulukon_nimi (sarake1, sarake2, ...);

Yllä olevassa SQL-koodissa indeksin_nimi on indeksin nimi, taulukon_nimi on taulukon nimi, ja sarake1, sarake 2ja niin edelleen ovat indeksoitavien sarakkeiden nimet.

Näin luot klusteroimattoman indeksin a Asiakkaat pöydät Sukunimi sarake SQL-käskyllä.

LUODA RYHMÄTTÖMÄN INDEKSI IX_Customers_LastName
ON asiakkaat (sukunimi);

Käsky luo klusteroimattoman indeksin nimeltä IX_Customers_LastName päällä Sukunimi sarakkeen Asiakkaat pöytä.

Indeksoinnin kustannukset

Vaikka indeksointi voi parantaa merkittävästi kyselyn suorituskykyä, se maksaa. Indeksointi vaatii lisää levytilaa hakemiston tallentamiseen, ja indeksointitoiminnot voivat hidastaa tietojen muokkaustoimintoja, kuten lisäyksiä, päivityksiä ja poistoja. Sinun on päivitettävä hakemisto tietojen muuttamisen yhteydessä, ja päivitys voi viedä aikaa suurille taulukoille.

Siksi on tärkeää tasapainottaa kyselyn suorituskyky ja tietojen muokkausteho. Sinun tulisi luoda indeksejä vain sarakkeille, joita haet usein. On myös tärkeää seurata säännöllisesti indeksiresurssien käyttöä ja poistaa tarpeettomat indeksit.

Kyselyn optimointi kyselyn yksinkertaistamisen avulla

Tietojen analysoinnissa monimutkaiset kyselyt ovat hyödyllisiä tietojen poiminnassa. Monimutkaiset kyselyt vaikuttavat kuitenkin suorituskykyyn ja voivat johtaa tehottomaan tiedon poimimiseen.

Kyselyjen yksinkertaistamiseen kuuluu monimutkaisten kyselyiden jakaminen pienempiin, yksinkertaisempiin kyselyihin nopeampaa ja vähemmän resursseja vaativaa käsittelyä varten.

Kyselyn yksinkertaistaminen parantaa suorituskykyä ja helpottaa tietojen purkamista jakamalla monimutkaiset kyselyt yksinkertaisempiin kyselyihin, koska monimutkaiset kyselyt voivat aiheuttaa pullonkauloja järjestelmään. Niitä on vaikea ymmärtää, mikä vaikeuttaa kehittäjien ja analyytikoiden ongelmien vianmääritystä tai optimointialueiden tunnistamista.

Tässä on esimerkki monimutkaisesta kyselystä, joka suoritetaan MSSQL: llä asiakastilausten taulukolle, jonka tavoitteena on tunnistaa trendit ja mallit tiedoista:

VALITSE
Asiakkaan nimi,
COUNT(tilaustunnus) AS yhteensä_tilauksia,
AVG(tilauksen_määrä) AS keskimääräinen_tilauksen_määrä,
SUM(tilauksen_määrä) AS kokonaismyynti
FROM
tilauksia
MISSÄ
tilauspäivämäärä '2022-01-01' JA '2022-12-31'
AND order_status = 'valmis'
GROUP BY
Asiakkaan nimi
OTTAA
COUNT(tilaustunnus) > 5
TILAA
total_sales DESC;

Kyselyllä haetaan asiakkaiden nimiä ja myyntitietoja vuoden 2022 valmistuneista tilauksista samalla kun suodatetaan alle viisi tilausta tehneet asiakkaat kokonaismyynnin mukaan laskevassa järjestyksessä.

Kysely voi tarjota arvokkaita oivalluksia, mutta se on monimutkainen ja kestää lopulta kauemmin käsittelyssä, varsinkin jos tilauksia taulukossa on paljon merkintöjä.

Voit yksinkertaistaa kyselyä jakamalla kyselyn pienempiin kyselyihin, jotka suoritetaan yksi kerrallaan.

- Hanki luettelo asiakkaiden nimistä ja heidän tekemiensa tilausten kokonaismäärästä
VALITSE
Asiakkaan nimi,
COUNT(tilaustunnus) AS yhteensä_tilaukset
FROM
tilauksia
MISSÄ
tilauspäivämäärä '2022-01-01' JA '2022-12-31'
AND order_status = 'valmis'
GROUP BY
Asiakkaan nimi
OTTAA
LASKE(tilaustunnus) > 5;

-- Hanki keskimääräinen tilausmäärä jokaiselle asiakkaalle
VALITSE
Asiakkaan nimi,
AVG(tilauksen_määrä) AS keskimääräinen_tilauksen_määrä
FROM
tilauksia
MISSÄ
tilauspäivämäärä '2022-01-01' JA '2022-12-31'
AND order_status = 'valmis'
GROUP BY
Asiakkaan nimi
OTTAA
LASKE(tilaustunnus) > 5;

-- Hanki kunkin asiakkaan kokonaismyynti
VALITSE
Asiakkaan nimi,
SUM(tilauksen_määrä) AS kokonaismyynti
FROM
tilauksia
MISSÄ
tilauspäivämäärä '2022-01-01' JA '2022-12-31'
AND order_status = 'valmis'
GROUP BY
Asiakkaan nimi
OTTAA
COUNT(tilaustunnus) > 5
TILAA
total_sales DESC;

Tämä yksinkertaistettu lähestymistapa erottaa kunkin asiakkaan nimien ja tilausten kokonaismäärän, keskimääräisten tilausmäärien ja kokonaismyynnin saamisen tehtävät yksittäisiin kyselyihin. Jokaisella kyselyllä on määrätyt tarkoitukset ja se on optimoitu tiettyjä tehtäviä varten, mikä helpottaa tietokannan käsittelyä pyynnöstä.

Vinkkejä kyselyn yksinkertaistamiseen

Kun yksinkertaistat kyselyitä, on tärkeää keskittyä yhteen tehtävään kerrallaan luodaksesi kyselyitä, jotka on optimoitu tiettyä tehtävää varten. Keskittyminen yhteen tehtävään voi parantaa suorituskykyä merkittävästi.

On myös tärkeää käyttää hyviä nimeämiskäytäntöjä, jotta koodia on helpompi ymmärtää ja ylläpitää. Voit helposti tunnistaa järjestelmän mahdolliset ongelmat ja parannuskohteet.

Kyselyn optimointi tallennettujen menetelmien avulla

Tallennetut menettelyt ovat valmiita SQL-käskyjä, jotka on tallennettu tietokantaan. Voit käyttää tallennettuja toimenpiteitä erilaisten toimintojen suorittamiseen päivityksestä tietojen lisäämiseen tai hakemiseen tietokannasta. Tallennetut menettelyt voivat hyväksyä parametreja. Voit kutsua niitä eri ohjelmointikielistä, mikä tekee niistä tehokkaan työkalun sovellusten kehittämiseen.

Tässä on esimerkki tallennetun prosessin luomisesta MSSQL: lle, joka palauttaa osaston työntekijöiden keskipalkan:

LUODAMENETTELY [dbo].[GetAverageSalary]
@DepartmentName VARCHAR(50)
KUTEN
ALKAA
VALITSEAVG(Palkka) kuten Keskipalkka
FROM työntekijöiltä
WHERE Osasto = @DepartmentName
LOPPU

Tallennetussa toimintosarjassa määritit parametrin nimeltä @Osaston nimi ja käytti MISSÄ lauseke tulosten suodattamiseksi osaston mukaan. Käytit myös AVG toiminto laskea osaston työntekijöiden keskipalkka.

Voit suorittaa tallennettuja toimenpiteitä MSSQL: ssä EXEC lausunto.

Näin voit suorittaa yllä olevan tallennetun toimenpiteen:

EXEC [dbo].[GetAverageSalary] @DepartmentName = 'Myynti'

Tallennetussa proseduurin suorituskäskyssä välität Myynti arvo osaston nimeksi. Selvityksessä palautetaan myyntiosaston työntekijän keskipalkka.

Kuinka tallennetut menettelyt parantavat kyselyn suorituskykyä?

Tallennetut toiminnot voivat parantaa merkittävästi kyselyn suorituskykyä. Ensinnäkin tallennetut menettelyt vähentävät verkkoliikennettä suorittamalla SQL-käskyt palvelinpuolella tiedon siirtämisen sijaan edestakaisin asiakkaan ja palvelimen välillä, mikä vähentää verkon kautta lähetettävän tiedon määrää ja kyselyvastauksia aika.

Toiseksi, voit koota tallennettuja välimuistiproseduureja, mikä tarkoittaa suoritussuunnitelman tallentamista muistiin. Kun kutsut tallennettua toimintosarjaa, palvelin hakee suoritussuunnitelman muistista uudelleenkääntämisen sijaan SQL-käskyt, mikä vähentää tallennetun toimintosarjan suoritusaikaa ja parantaa kyselyä esitys.

Voit määrittää MSSQL: n Ubuntuun

MSSQL on edistynyt merkittävästi Ubuntun ja muiden Linux-jakelujen tukemisessa. Microsoft huomasi Linuxin kasvavan suosion yrityksessä ja päätti laajentaa lippulaivatietokantapalvelimensa saatavuuden Linux-alustoihin.