PostgreSQL - užklausų optimizavimas

Turinys
Kai darome kartotinius užklausų Sudėtingoje sistemoje daug kartų nesirinkome tinkamo maršruto, kad pasiektume optimalų našumą duomenų bazės lygiu. Esant dabartinei technologinei pažangai ir skaičiavimo galiai, kurią dažnai matome savo serveriuose, galime manyti, kad duomenų bazės optimizavimas yra praeitis.
Tai negali būti toliau nuo tiesos, nepaisant to, kad padidėjo įrangos galia, duomenų bazės yra labai svarbios programų veikimui, todėl gerai parašyta ir labai optimizuota užklausa gali reikšti kelių sekundžių apkrovą. Sistema, padauginus ją iš tuo pačiu metu besinaudojančių vartotojų skaičiaus, matome, kaip buvo švaistomos išlaidos ir galia.
Optimizuokite užklausas
Geriausias būdas pagerinti mūsų duomenų bazių našumą yra pradėti nuo gerai parašytų užklausų, daug kartų pastebime, kad užklausos nėra gerai parašytos, nes nėra taip optimizuotos, kaip turėtų būti, todėl yra daug priežasčių, viena iš jų yra pakartotinis naudojimas be kodo žinojimo; Turime omenyje tai, kad jei tam tikru momentu padarėme užklausą, kuri mums tinka naudojant a prisijungti kairėje Mes ir toliau jį taikysime didindami lentelių, su kuriomis reikia susipažinti, skaičių, kai jį keičiame ir keičiame kai kurias sąlygas iki vidinis sujungimas Tai gali sutrumpinti kelią ir sutaupyti procesoriaus sąnaudas.
SQL yra kalba, kurią, nors ir gana lengva skaityti, ji turi daug aspektų ir daug variantų, leidžiančių mums padaryti tai, kas geriausiai ir blogiausiai veikia, mes turime žinoti, kaip nustatyti, ar mūsų sprendimas priklauso kategorija ar kita.
Kad žinotume, jog einame teisingu keliu, vienas iš svarbiausių dalykų yra atnaujinimas, tai yra, mes negalime tęsti kodavimo SQL sistemoje „PostgreSQL“ tarsi tai būtų pirmoji versija, kai esame 9 versija.
Apie antrinių užklausų naudojimą
Tai yra viena iš dažniausiai pasitaikančių klaidų, tai yra tai, kad mes manome, kad užklausa yra dalių rinkinys, kurį sujungiame, kol gauname galutinį rezultatą, tačiau toks elgesys daro didelę įtaką mūsų duomenų bazės veikimui.
Pažiūrėkime tokio tipiško elgesio pavyzdį:
 SELECT trakto_id, (SELECT COUNT (*) FROM census.facts As F WHERE F.tract_id = T.tract_id) Kaip num_facts, (SELECT COUNT (*) FROM census.lu_fact_types As Y WHERE Y.fact_type_id IN (SELECT fact_type_id FROM census). faktai F KUR F.tract_id = T.tract_id)) Kaip num_fact_types FROM census.lu_tracts As T; 

Dabar, jei matome grafiką AIŠKINTI Iš šios užklausos suprasime, kaip brangu tai padaryti tokiu būdu:

DIDELIS

Kaip matome, turime keletą taškų, kurie yra kliūtys šioje užklausoje, be visų duomenų, kuriuos reikia perkelti neefektyviai, todėl mes juos perrašysime optimaliau ir palyginsime su nauja grafika AIŠKINTI.
 SELECT T.tract_id, COUNT (f.fact_type_id) Kaip num_facts, COUNT (DISTINCT fact_type_id) As number_fact_types FROM census.lu_tracts Kaip T LEFT JOIN surašymo faktai Kaip F ON T.tract_id = F.tract_id GROUP BY T.tract_id; 

Šioje naujoje mūsų užklausos versijoje vengiame naudoti antrines užklausas, vietoj to darome atitikmenį su prisijungti kairėje Y Grupuoti pagalJei matome grafiką, galime pasakyti skirtumą.

DIDELIS

Mes matome, kaip būdas gauti mūsų rezultatą buvo daug trumpesnis, o tai mums suteikia didesnį našumą, o tai nereiškia, kad turime neįtraukti savo darbo įrankių antrinių užklausų, bet turime žinoti, kad jie gali egzistuoja geresni keliai tam, ką šiuo metu galime pasiūlyti.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave