1
Vývoj / Re:SQL: vypis susedov
« kdy: 23. 04. 2025, 21:30:34 »
Pak je tu ještě možnost že to je opravdu průchod výsledkovou sadou toho vyhledávání (podle konkrétních kritérií včetně nějakého řazení), a ne celou tabulkou. Pak se může hodit i mít tu celou výsledkovou sadu někde vedle uloženou (ve struktuře typu (id_vysledkove_sady, poradi_vysledku_v_sade, id_vyhledaneho_objektu) - a pro procházení tou sadou ve stylu next/previous (případně i stránkování) si předávat všechny tři (next znamená např. "jsem na výsledkové sadě id 1234 na položce č. 3 což je entita s id 9999 - zmáčknu next - dám požadavek že chci ze sady č. 1234 položku č. 4 - a k tomu se pak rychle dohledá že to je entita třeba s id 1645").
Je to o výběru jestli chci mít stabilní výsledkovou sadu (a jistotu že X*next + X*prev mě vždzycky vrátí tam kde jsem začal, i když se něco mezi přidá/smaže/změní podmínky takže to vypadne z výsledků vyhledávání/...) nebo to nepotřebuju (a můžu mít jednodušší implementaci).
I stránkování se pak dělá jenom tak že si z té odložené sady řeknu o položky od nějaké pozice ( (číslo stránky - 1) x (velikost stránky) + 1) do nějaké pozice ( (číslo stránky) x (velikost stránky) ).
LAG a LEAD mi můžou při zobrazení detailu jedné entity najít ID těch sousedů, ale po přechodu na další musím udělat znova vyhledávací dotaz abych mohl najít next/prev k nové entitě ve stejném pořadí (a ještě ve výsledku hledat kde mám aktuální entitu abych věděl ke komu najít toho předchozího a následujícího? No to můžu rovnou kouknout na předchozí a následující řadek toho co mi vrátila databáze ...).
Udělat dva selekty na "největší menší" a "nejměnší větší" id co jsou v té výsledkové sadě je lepší, ale pokud se to má procházet se složitou vyhledávací podmínkou a jěště nějak seřazené tak to taky rozhodně může skončit dost pomalé.
Je to o výběru jestli chci mít stabilní výsledkovou sadu (a jistotu že X*next + X*prev mě vždzycky vrátí tam kde jsem začal, i když se něco mezi přidá/smaže/změní podmínky takže to vypadne z výsledků vyhledávání/...) nebo to nepotřebuju (a můžu mít jednodušší implementaci).
I stránkování se pak dělá jenom tak že si z té odložené sady řeknu o položky od nějaké pozice ( (číslo stránky - 1) x (velikost stránky) + 1) do nějaké pozice ( (číslo stránky) x (velikost stránky) ).
LAG a LEAD mi můžou při zobrazení detailu jedné entity najít ID těch sousedů, ale po přechodu na další musím udělat znova vyhledávací dotaz abych mohl najít next/prev k nové entitě ve stejném pořadí (a ještě ve výsledku hledat kde mám aktuální entitu abych věděl ke komu najít toho předchozího a následujícího? No to můžu rovnou kouknout na předchozí a následující řadek toho co mi vrátila databáze ...).
Udělat dva selekty na "největší menší" a "nejměnší větší" id co jsou v té výsledkové sadě je lepší, ale pokud se to má procházet se složitou vyhledávací podmínkou a jěště nějak seřazené tak to taky rozhodně může skončit dost pomalé.