1
Vývoj / Re:SQL: vypis susedov
« kdy: 27. 04. 2025, 13:31:38 »Vim ze je to nevyzadana rada, ale strankovani je spatne z mnoha duvodu. Vykon databaze je jen z nich.
Mnohem lepsi a modernejsi pristup je "inifine scolling". Je to mnohem jednodusi a pro uzivatele je to i prehlednejsi.
hmm... ako to funguje s niecim, co je potencialne tabulka o 1000+ riadkoch?
Zobrazit 1000+ radek v prohlizeci zase neni takovy problem. Otazka je jestli o to uzivatel doopravdy stoji.
U nekonecneho scrolovani mate vyhodu ze uzivateli nerikate kolik zaznamu jste nasli.
U strankovani nekde zobrazujete x/y, kde "x" je aktualni stranka a "y" je celkovy pocet stranek. Spocitat to y byva casto velmi narocne na vykon a uzivatele to casto ani nezajima. Projde jen prvnich 3-5 stranek a pak zada jiny dotaz.
U nekonecneho strankovani si zapamatujete posledni zobrazene ID a to pak pridavate do filtru where clausule:
Kód: [Vybrat]
WHERE 1=1
and ID > :last_diplayed_id
and <... dalsi podminky hledani >
FETCH FIRST 50 ROWS ONLY;
Pokud mate dobre udelane indexy, tak se pouzije INDER RANGE SCAN a databaze nemusi znovu prochazet zaznamy ktere uz byly zobrazene predchozim dotazem. To je totiz hlavni problem se strankovanim. Pro zobrazeni x-te stranky databaze musi stejne projit stranky 1 az (x-1). Ke zobrazeni celkoveho poctu stranek databaze prochazi uplne vsechny nalezene zaznamy a pak posle uzivateli jen maly vyrez dat.