Optimizuotų užklausų duomenų šablonai
Paprasčiausias ir greičiausias duomenų užklausos modelis yra:
- Viena lentelė arba rodinys
- Iš anksto filtruotas serveryje pagal tai, ko jums reikia
- Stulpeliai tinkamai indeksuojami pagal numatomas užklausas
Kai kuriate programą, turite pagalvoti, kaip greitai pateikti užklausą dėl duomenų. Geriausias būdas pateikti užklausą dėl duomenų yra naudoti vieną lentelę arba rodinį, kuriame yra visa jums reikalinga informacija, ir filtruoti jį serveryje prieš rodant programoje. Taip pat turite įsitikinti, kad stulpeliai, kuriuos naudojate duomenims filtruoti ar rūšiuoti, yra tinkamai indeksuoti. Dėl to programa tampa greitesnė ir sklandesnė.
Pavyzdžiui, tarkime, kad turite galeriją, kurioje rodomas klientų ir jų pardavėjų sąrašas. Jei kliento ir pardavėjo informaciją saugote atskirose lentelėse, turite naudoti peržvalgas, kad gautumėte kiekvieno kliento pardavėjo vardą. Tai sulėtina programos veikimą, nes ji turi vykdyti daug užklausų kitoje lentelėje. Geresnis būdas yra sukurti rodinį, kuris sujungia kliento ir pardavėjo informaciją vienoje lentelėje, ir naudoti tą rodinį kaip savo galerijos duomenų šaltinis. Tada jūsų programai tereikia paleisti vieną užklausą, kad gautų visus reikiamus duomenis.
Yra kompromisas tarp užklausos greičio ir duomenų normalizavimo. Duomenų normalizavimas reiškia, kad duomenis saugote tik vieną kartą ir išvengiate dubliavimo. Tai padeda išlaikyti duomenų nuoseklumą ir tikslumą. Tačiau kartais reikia kopijuoti kai kuriuos duomenis, kad užklausos būtų greitesnės ir lengvesnės. Šiuos du tikslus turite subalansuoti kurdami programos dizainą ir lentelės struktūrą. Priešingu atveju jūsų programa bus lėta ir atsilikusi, nes jai reikia atlikti daug darbo, kad būtų galima filtruoti ir sujungti duomenis iš skirtingų lentelių.
Serverio rodinių naudojimas
Peržiūros tikriausiai yra labiausiai paplitusi priemonė, padedanti subalansuoti šiuos tikslus. Jie pateikia vieną užklausų lentelės struktūrą, iš anksto filtruoja duomenis, ko jums reikia užklausoje, ir įgalina peržvalgas bei sujungimus su kitomis lentelėmis. Kadangi rodinio filtrai, peržvalgos ir sujungimai apskaičiuojami serveryje, tiek naudingoji apkrova, tiek kliento pusės skaičiavimas yra minimizuojami.
Venkite per daug peržvalgų galerijoje
Galerijoje gali būti rodoma daug duomenų šaltinis įrašų. Tačiau kartais reikia parodyti papildomą informaciją iš kito duomenų šaltinis, kuris yra susijęs su originaliu. Pavyzdžiui, turite galeriją, kurioje rodomas klientų sąrašas, ir norite rodyti kiekvienam klientui priskirto pardavėjo vardą. Pardavėjo vardas ir pavardė saugomi kitoje duomenų šaltinis nei kliento informacija. Norėdami rodyti pardavėjo vardą, turite naudoti peržvalgos funkciją, kuri randa atitinkantį įrašą kitame duomenų šaltinis. Taip pradinė lentelė išplečiama peržvalgos reikšmėmis.
Tačiau lentelės išplėtimas gali būti labai lėtas, jei turite daug įrašų ir daug peržvalgų. Kiekvienam galerijoje esančiam įrašui programa turi vykdyti atskirą užklausą kitam duomenų šaltinis ir gauti peržvalgos reikšmę. Tai reiškia, kad programai gali tekti paleisti daug kiekvieno įrašo užklausų, o tai gali užtrukti ilgai ir turėti įtakos programos našumui. Šis anti-modelis kartais vadinamas "N kvadratu, (n^2)" arba "N+1" problema.
Naudokite "StartsWith" arba filtrą
Power Fx Pateikiami keli duomenų paieškos būdai. Apskritai naudokite išraišką, kuri naudoja indeksą, pvz., StartsWith arba Filter, o ne tokį, kuris skaito visą lentelę kaip In. Operatorius In tinka atminties rinkiniams arba jei išorinio duomenų šaltinis lentelė yra labai maža.
Apsvarstykite galimybę dubliuoti duomenis
Kartais užklausoje duomenis galima pasiekti lėtai, nes jie saugomi kitoje vietoje arba kitu formatu. Norėdami pagreitinti užklausą, galite nukopijuoti lėtus duomenis ir saugoti juos vietoje lentelėje, kurią galima greitai ir lengvai užklausti. Tačiau tai reiškia, kad vietiniai duomenys gali būti ne pati naujausia pradinių duomenų versija. Tada paleiskite kitą procesą, kad periodiškai atnaujintumėte vietinius duomenis. Šis procesas gali būti Power Automate srautas, papildinys, saugoma procedūra ar bet kuris kitas metodas, galintis perkelti duomenis iš vienos vietos į kitą.
Vietinių duomenų atnaujinimo dažnumo reikalavimas priklauso nuo jūsų verslo poreikių. Kiek nauji turi būti jūsų programos duomenys? Pavyzdžiui, tarkime, kad dirbate "Contoso", įmonėje, kuri parduoda dviračius. Galimų dviračių sąrašas saugomas produktų duomenų bazėje, kurią galite pasiekti naudodami pasirinktinės jungties API. Tačiau tarkime, kad API skambutis yra lėtas, todėl nusprendžiate nukopijuoti produkto duomenis ir išsaugoti juos vietoje lentelėje. Tada sukuriate rodinį, kuriame lentelė sujungiama su kitais atitinkamais programos duomenimis. Taip pat sukuriate Power Automate srautą, kuris vykdomas kiekvieną dieną ir atnaujina lentelę naujausiais produkto duomenimis iš API. Tada programa gali greičiau pateikti užklausą dėl vietinių duomenų, o duomenys yra ne senesni kaip viena diena.
Duomenų dubliavimas yra įprastas būdas įmonės lygio programose, siekiant užtikrinti gerą našumą. Galite naudoti Dataverse papildinius, išsaugotas procedūras arba duomenų judėjimą, kad dubliuotumėte duomenis į vieną lentelę, optimizuotą užklausoms. Pagrindinis klausimas yra toks: kiek šie duomenys turi būti atnaujinti? Jei galite sau leisti šiek tiek atidėti, galite naudoti šią techniką, kad pagreitintumėte programą.
Pasiūlymai
Norėdami pasiekti šį tikslą, apsvarstykite šiuos klausimus ir pasiūlymus:
- Kiek svarbu, kad klientas matytų duomenų reikšmę galerijoje arba duomenų tinklelyje? Ar būtų priimtina pirmiausia pasirinkti įrašą ir tada rodyti duomenis formoje?
- Ar rodinys gali atlikti išankstinius darbus, reikalingus norint matyti duomenis tinkamu formatu?
- Ar naudojate "IN" operatorių, kuriame veiks "StartsWith"?
- Kiek naujausi turi būti jūsų duomenys? Ar yra duomenų dubliavimo strategija, kurią galite naudoti, kad jūsų užklausa pagal numatytuosius nustatymus veiktų vienoje lentelėje?