Diskuze: Správné zobrazení produktů
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Doporucuju se kouknout na LINQ tady na webu https://stackoverflow.com/…ession-query
Děkuji z opověď. LINQ samozřejmě znám a je fakt že tady by se dal použít. Ale přesně nevím jak... Mohl by si mi prosím jenom napsat, jak třeba by si to udělal.
Nevim, zda tohle pujde jednoduse filtrovat. Uvazuji o sql dotazu.
Ja bych to udelal tak, ze ty komentare jsou komentare k nejakemu prispevku, meli
by mit id_prispevku. A dale id_komentare na
ktery clovek reaguje. Pak se podle id_prispevku daji ziskat vsechny komentare k
tomu prispevku. Cili, v sql bych si nejdriv pridal jeste sloupec s
id_prispevek.
Ale, ty to resis asi jinak nez na urovni sql. To jen takovy napad.
Resp, ty resis sktruturu kategorii, to je podobne.
Tam bych si mozna stanovil, ze muze mit strom max 6 vetsi a pro kazdou vetev
pridal sloupecek s id. Neni to moc usporne, ale zas nemusis resit rekurzivni
dotazy.
Osobne si myslím, že ak nemáš niekoľko stotisíc kategórií, tak je v
tomto prípade rekurzívne riešenie v pohode akceptovateľné
Ak by si chcel použiť algoritmus s nejakou nižšou zložitosťou, tak by
si musel spraviť medzikrok v podobe vytiahnutia dát z databázy do svojho
programu a tam ich spracovať svojím algoritmom v C#. Pamätaj ale na to, že
SQL databázy sú dnes už špičkovo odladené a sotva môžeš dúfať, že by
si sa im v rýchlosti spracovania dát vyrovnal Nehovoriac o tom, že by si
pravdepodobne prenášal dosť veľký objem dát z databázy, čo zamená kopu
ďalších z toho vyplývajúcich problémov.
Pokiaľ by si si bol niekedy v živote na 1 000 000% istý, že poznáš / potrebuješ spracovať dáta nejakým špecifickým spôsobom, nevieš alebo sa ten algoritmus nedá efektívne zapísať pomocou SQL a benchmarkom a profilovaním si potvrdil, že tvoj spôsob spracovania v C# je určite výhodnejší, tak by som aspoň prichádzajúce dáta na strane databázy prefiltroval a usporiadal, pokiaľ sa len dá a až potom si ich ťahal k sebe a spracovával ich ďalej. Samozrejmosťou je aj optimalizácia na strane databázy, to znamená minimálne teda zavedenie databázových indexov tam, kde sú potrebné, optimalizácia samotných SQL queries, možno zmena štruktúry tabuľky (tabuliek) atď.
Entity Framework + LINQ ani iné ORM nástroje ešte dlho nebudú vedieť
zostaviť perfektné (alebo aspoň efektívne) queries, ale aj tak nám dnes
akosi stačia a ako sa hovorí, "premature optimization is the root of all evil"
Inak povedané, pokiaľ ti
tento konkrétny problém nespôsobuje už teraz závažné problémy s
výkonom, až tak by som sa o to nestaral. Ak áno, tak naozaj poriadne a vo
všetkých aspektoch.
Moc děkuji za odpovědi. Jak píše Peter Mlich také mě napadlo si sestavit SQL dotaz, našel jsem na internetu příklad, kde je také rekurze, ale tak zase by se to o něco zrychlilo a mohl bych to načítat například přes Dapper a ne přes EF, abych docílil ještě větší rychlosti. Jinak tvůj nápad je zajímavý, ale to se mi dělat nechce...
Martin Petrovaj děkuji za super vysvětlení. Samozřejmě máš pravdu pokud
nebudu mít stotisíc kategorií, tak to nebude nic strašně pomalýho. Zase
mě napadlo, že si přece jenom můžu vždy vzít například jenom prvních 5
prvků a pokud se klikne na další stránku tak pokračovat skipnout 5 a vzít
dalších 5 atd. Což by mělo tu rychlost zlepšit. Ale stejně se zeptám
jestli si třeba myslíš, že je dobrý nápad napsat si SQL skript a pomocí
dappru vrátit co myslíš?
Ako nápad na zrýchlenie aplikácie to vôbec nie je zlé. Napíš si nejakú SQL procedúru, ktorá ti bude vracať tieto stránkované výsledky, dapperom to jednoducho a rýchlo vytiahneš… why not.
Len si zisti, ako sa robí v tebou používanom SQL to stránkovanie (v MS
SQL sa najčastejšie používa offset a fetch [1 ], prípadne ak potrebuješ viac kontroly tak priamo
kurzor). U ostatných databáz ale úprimne neviem. A nezabudni to poriadne
otestovať pre všetky možné situácie a prípady, stačí drobná chyba a
začnú sa diať divy
Moc ti děkuji. Jojo
dělám v MsSql kouknu na to. Ještě jednou všem děkuji.
Zobrazeno 8 zpráv z 8.