PostgreSQL - Optimizacija upita

Sadržaj
Kad radimo višestruke upite U složenom sustavu mnogo puta ne idemo odgovarajućim putem kako bismo postigli optimalne performanse na razini baze podataka, s trenutnim tehnološkim napretkom i računalnom snagom koju često vidimo na našim poslužiteljima možemo misliti da je optimizacija baze podataka prošlost.
To ne može biti dalje od istine, unatoč napretku u snazi ​​opreme, baze podataka su temeljne za izvedbu aplikacija, iz tog razloga dobro napisan i visoko optimiziran upit može značiti nekoliko sekundi opterećenja koje štedi u sustav, pomnožimo li to s brojem istodobnih korisnika, vidimo kako se troši trošak i snaga.
Optimizirajte upite
Najbolji način za poboljšanje performansi naših baza podataka je započeti s dobro napisanim upitima, mnogo puta otkrijemo da upiti nisu dobro napisani jer nisu optimizirani koliko bi trebali biti, za to postoji mnogo razloga, jedan od njih je ponovna upotreba bez svijesti o kodu; Time želimo reći da ako smo u nekom trenutku uputili upit koji nam odgovara s a lijevo pridruživanje Nastavit ćemo ga primjenjivati ​​pri povećanju broja tablica koje treba konzultirati, kada ga mijenjamo i mijenjamo neke klauzule prema unutarnje spajanje To bi moglo skratiti put i uštedjeti potrošnju procesora.
SQL je jezik koji, iako je prilično jednostavan za čitanje, ima mnogo aspekata i mnogo varijacija koje nam omogućuju da učinimo nešto što funkcionira na najbolji i najgori način, na nama je da znamo prepoznati pripada li naše rješenje kategoriju ili drugu.
Kako bismo znali da smo na dobrom putu, jedna od najvažnijih stvari je ažuriranje, odnosno ne možemo nastaviti kodiranje u SQL -u unutar PostgreSQL kao da je to prva verzija kad smo u verzija 9.
O korištenju podupita
Ovo je jedna od najčešćih pogrešaka koje činimo, a to je da razmišljamo o upitu kao o skupu dijelova koje zajedno povezujemo dok ne dobijemo konačni rezultat, međutim ovo ponašanje ima veliki utjecaj na performanse naše baze podataka.
Pogledajmo primjer ovog tipičnog ponašanja:
 SELECT tractor_id, (SELECT COUNT (*) FROM popis. Činjenica činjenice F GDJE F.tract_id = T.tract_id)) Kao br_fact_types IZ popisa.lu_tracts Kao T; 

Sada, ako vidimo grafikon OBJASNITI Iz ovog upita shvatit ćemo koliko je skupo to učiniti na ovaj način:

POVEĆAJTE

Kao što vidimo, imamo nekoliko točaka koje predstavljaju uska grla u ovom upitu, osim svih podataka koji se moraju premještati neučinkovito, zato ćemo ih prepisati na optimalniji način i usporediti s novim grafikonom OBJASNITI.
 SELECT T.tract_id, COUNT (f.fact_type_id) Kao num_facts, COUNT (DISTINCT fact_type_id) As num_fact_types IZ Census.lu_tracts As T LEFT JOIN popisu.facts Kao F ON T.tract_id = F.tract_id GRUPA PO T.tract_id; 

U ovoj novoj verziji našeg upita izbjegavamo korištenje podupita, umjesto toga radimo ekvivalent sa lijevo pridruživanje Y grupiraj poAko vidimo grafikon možemo vidjeti razliku.

POVEĆAJTE

Možemo vidjeti kako je način postizanja našeg rezultata bio mnogo kraći što nam daje bolje performanse, s time ne mislimo da moramo isključiti podupite naših alata za rad, već moramo biti svjesni da oni mogu postoje bolji putevi za ono što trenutno predlažemo.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod
wave wave wave wave wave