PostgreSQL - Optimalisering av søk

Innholdsfortegnelse
Når vi gjør flere spørsmål I et komplekst system mange ganger tar vi ikke den riktige ruten for å ha optimal ytelse på databasenivå, med dagens teknologiske fremskritt og datakraften som vi ofte ser på serverne våre, kan vi tro at databaseoptimalisering er et spørsmål fra fortiden.
Dette kan ikke være lenger fra sannheten, til tross for utstyrets fremskritt, er databasene grunnleggende for ytelsen til applikasjonene, derfor kan en velskrevet og høyt optimalisert spørring bety flere sekunders belastning som den sparer i systemet, hvis vi multipliserer dette med antall samtidige brukere, ser vi hvordan kostnaden og kraften ble bortkastet.
Optimaliser søk
Den beste måten å forbedre ytelsen til databasene våre er å starte med velskrevne spørringer. Mange ganger finner vi ut at spørringene ikke er godt skrevet siden de ikke er så optimaliserte som de burde være, det er mange årsaker til dette, en av dem er gjenbruk uten kodebevissthet; Med dette mener vi at hvis vi på et tidspunkt gjorde en forespørsel som fungerer for oss med en venstre bli med Vi vil fortsette å bruke det når vi øker antall tabeller som skal konsulteres, når vi endrer det og endrer noen klausuler med indre sammenføyning Det kan forkorte banen og spare prosessorforbruk.
SQL er et språk som, selv om det er ganske lett å lese, har mange aspekter og mange varianter som lar oss gjøre noe som fungerer på den beste og verste måten, er det opp til oss å vite hvordan vi skal identifisere om løsningen vår tilhører en kategori eller annet.
For å vite at vi er på rett spor er en av de viktigste tingene å bli oppdatert, det vil si at vi ikke kan fortsette å kode i SQL innen PostgreSQL som om det var den første versjonen når vi er i versjon 9.
Om bruk av undersøkelser
Dette er en av de vanligste feilene vi gjør, og det er at vi tenker på en forespørsel som et sett med brikker vi fester sammen til vi får et endelig resultat, men denne oppførselen har stor innvirkning på ytelsen til databasen vår.
La oss se et eksempel på denne typiske oppførselen:
 SELECT tract_id, (SELECT COUNT (*) FRA census.facts As F WHERE F.tract_id = T.tract_id) As num_facts, (SELECT COUNT (*) FRA census.lu_fact_types As Y WHERE Y.fact_type_id IN (SELECT fact_type_id FROM. fakta F HVOR F.tract_id = T.tract_id)) As num_fact_types FROM census.lu_tracts As T; 

Nå, hvis vi ser grafen til FORKLARE Fra denne forespørselen vil vi innse hvor dyrt det er å gjøre det på denne måten:

FORSTØRRE

Som vi kan se, har vi flere punkter som er flaskehalser i denne spørringen, bortsett fra alle dataene som må flyttes ineffektivt, for dette kommer vi til å skrive det om på en mer optimal måte og sammenligne det med en ny graf over FORKLARE.
 VELG T.tract_id, COUNT (f.fact_type_id) As num_facts, COUNT (DISTINCT fact_type_id) As num_fact_types FROM census.lu_tracts As T LEFT JOIN census.facts As F ON T.tract_id = F.tract_id GROUP BY T.tract_; 

I denne nye versjonen av spørringen vår unngår vi å bruke undersøkelser, i stedet gjør vi en tilsvarende med venstre bli med Y gruppe avHvis vi ser grafen, kan vi se forskjellen.

FORSTØRRE

Vi kan se hvordan måten å oppnå vårt resultat har vært mye kortere, noe som gir oss en høyere ytelse. Med dette mener vi ikke at vi må ekskludere undersøkelsene til arbeidsverktøyene våre, men snarere at vi må være klar over at de kan finnes bedre veier for det vi kan foreslå for øyeblikket.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave