Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java webová aplikace stránkování dat

Ahoj,

chtěl bych se zeptat zkušených jak řešit stránkování dat.

Příklad:

uživatel má v databázi nějaký seznam.. třeba seznam oblečení (tedy nějaké objekty, oblečení má barvu, velikost atd...).

Chci udělat výpis tohoto oblečení na profilu uživatele například po 10 kusech.

Můj postup:

Načtu data z DB do Listu a následně je proženu svým napsaným kusem kódu co my vyhodí List o velikosti 10 (podle čísla stránky na který je).

Je to tak v pohodě? Co když budu první list (ten načtený z db o velké velikosti například 10000000000000 kusů - a z něj pak budu vybírat 10 kusů, to zatěžuje zbytečně paměť, ne?).

Je nějaký lepší řešení? Třeba rovnou vybírat 10 kusů ? Vím že můžu nastavit omezení maximálního počtu vybraných kusů z db, ale jak zajistit aby to byl právě můj interval třeba na stránce číslo 4?

Předmět Autor Datum
Správný postup: načteš prvních 10 záznamů z DB a zobrazíš je. Uživatel přejde na další stránku, tak… nový
Jan Fiala 25.02.2016 14:11
Jan Fiala
Tohle se řeší na úrovni SQL dotazu, většina DB má podporu stránkování, ale co máš za DB jsi zatajil.… nový
MaSo 25.02.2016 14:14
MaSo
Používám normál MySql, dá se to tedy řešit takhle? : Chce první stránku po 10 kusech: SELECT * FRO… nový
MašinkaTomáš 25.02.2016 14:16
MašinkaTomáš
Tohle nebude fungovat, když ID nepůjdou po sobě, nebo tam bude "díra" (vymazané záznamy)... http://… nový
MaSo 25.02.2016 14:19
MaSo
Tady to má o něco jednodušeji podané: http://www.w3schools.com/php/php_mysql_select_limi t.asp nový
Jan Fiala 25.02.2016 14:30
Jan Fiala
Jo, ale problém s tou fci LIMIT - OFFSET je ten, že když bude dělat OFFSET 100000000,15 tak stejně n… nový
MaSo 25.02.2016 14:34
MaSo
Díky za rady. [2aRDSDm.png] V dokumentu nikde nepíše co znamenají čísla v LIMIT LIMIT 0, 20 LIMIT… nový
MašinkaTomáš 25.02.2016 14:43
MašinkaTomáš
Aha, asi odkud se začíná :-) Díky vyřešeno. A tohle nám ve škole neřeknou :-| nový
MašinkaTomáš 25.02.2016 14:45
MašinkaTomáš
Nespoléhej na to, že ti ve škole něco řeknou. Programování je hlavně o vyhledávaní informací... nový
MaSo 25.02.2016 14:53
MaSo
Právě proto to teď asi hledám :-) Díky poslední
MašinkaTomáš 25.02.2016 14:54
MašinkaTomáš

Správný postup:
načteš prvních 10 záznamů z DB a zobrazíš je. Uživatel přejde na další stránku, tak načteš dalších 10 záznamů.
Načítat z DB všechny záznamy a řešit to až v kódu není správné. Představ si, že tam budou desítky tisíc položek a ty jedna zatížíš DB server a druhak budeš mít šílenou spotřebu paměti

Jo, ale problém s tou fci LIMIT - OFFSET je ten, že když bude dělat OFFSET 100000000,15 tak stejně načte 100000015 záznamů s tím, že těch 100000000 se zahodí (na úrovni DB). V mém linku je i popis, jak to řešit.

EDIT: Pokud tam ale nemáš milióny záznamů, tak použij LIMIT - OFFSET a neřeš to...

Zpět do poradny Odpovědět na původní otázku Nahoru