Nezgodan MySQL upit (za mene)

Ima tome već dve godine kada sam na to naišao i razlog mi se činio logičnim iako je i meni u startu izgledalo kao da je u pitanju dva “naziva” za istu stvar, odnosno da je prednost view-a samo olakšana sintaksa. Elem, iz tog razloga moje prvobitno rešenje je i bilo bazirano na podupitima, ali kada je baza prešla milion slogova i značajno usporila, tragao sam za rešenjem i bukvalno prebacivanjem tog upita na view pristup dobio sam značajno na ubrzanju.
Sada trenutno radim denormalizaciju tabela kako bih dobio na brzini i ovih dana bih se trebao nakaniti da to podignem gore, ali mi je mrska pomisao na migraciju podataka :slight_smile:

Evo tebe opet na tablici od milion slogova
Vjerojatno subquery nisi postavio u skladu s indeksima koje imaš na tablici. Ili si imao previše indexa pa baza nije koristila najbolji. Ima tu više stvari kao što sam i rekao na početku.
Meni su recimo view-ovi nužno zlo i koristim ih samo za dijeljenje tablica između baza. No, ja radim sa MS SQL Serverom, MySQL ipak ima razlika.

Da prokomentarisem, mada sam manji strucnjak od vas trojice za mysql, moje iskustvo je da je JOIN brz od subupita.
Znam da sam radio prepravljanje iz subupita u joine na jednom sajtu gde se kombinuju 2, ili 3 tabele, gde zbirno ima preko milion ipo redova u tabelama i da se iscitavanje rezultata mnogo, mnogo poboljsalo.
Evo bas jutros malo gledao po netu i svugde vidim da je JOIN brzi i da treba izbegavati subupite, a narocito subupite u WHERE uslovu.
Viewe nikad nisam koristio, nisam siguran ni kako.

Sve je ovo komplikovano, kod ovih filtera, jos ako zelim da mi za svaku stavku iz filtera (leva kolona), prebroji koliko jos ima proizvoda, nakon svakog izbora pojedine stavke iz filtera i refresa stranice, previse upita za bazu, narocito gde je velika poseta u jednom trenutku i veliki broj proizvoda, redova u bazi.

…čitao sam čak o varijanti “slow index” …kad pod određenim okolnostima index čak uspori pretraživanje. (Nadopunjujem samo tvoju misao da ima svega…)

Tako da može biti puno razloga zašto se VIEW pokazao bolji od podupita, i pod nekim drugim okolnostima je možda bolji podupit. Ne vjerujem da se može generalizirati…i da je jedna metoda apsolutno jača/bolja od druge. Jer tom logikom, druga metoda nebi ni postojala…

Ali ocke je svakako napomenuti da se sa VIEW može što i sa podupitom…pa se poigrati sa obje varijante…

Ma ima svega.
Dosta davno, jedan report koji se često koristio je radio odlično. No, nakon nekog vremena je počeo štekati. Ispostavilo se da su se u primarnu tablicu podaci napunili tako da je glavni index postao nevažan (previše “istih” zapisa) i nije se više koristio.

Volim baze više od klasičnog programiranja

Ja na zalost jos nisam prosao primjere sql upita onako skolski od jednostavnog prema slozenom, kako se recimo uci matematika na primjerima zadataka. Nego onako usput uvijek skrpam ono sto mi trenutno treba.
Kad negdje zapne nešto ozbiljnije…bit će red to sve školski detaljno savladati.

Ono na što još nisam naletio, nekakvi tutorijal koji bi tako vodio kao zbirka zadataka. Ako netko zna nešto dobro, slobodno linka!