Autor | Zpráva | ||
---|---|---|---|
Marti_n Profil |
Zdravím,
Zoberme si teoreticky. Máme tabuľku s príspevkami príklad na tomto fóre. Nemáme to tak, že zobrazujeme počet strán, ale iba tlačítko "load" (ktoré nám dogeneruje ďalšie príspevky). Máme 1000 príspevkov a zobrazujeme prvých 20. Musíme zistiť či je príspevkov viac ako 20, aby sme mohli prípadne zobraziť tlačítko "load". Po stlačení tlačítka sa dogeneruje ďalších 20 príspevkov a cyklus sa opakuje, zase sa zistuje či zobraziť tlačítko "load" atď. Napadli ma 3 varianty ako vyriešiť to zobrazovanie tlačítka. 1) SELECT count(*) .... // zobrazí 980 rows, ak nerátame tých 20 zobrazených 2) SELECT id .... LIMIT 1 // zobrazí mi 1 row ale s vytiahnutím id, ktoré nepotrebujeme 3) Spravíme prvú variantu pri prvom zobrazení príspevkov, hodnotu 980 uložíme príklad do SESSIONS a pri ďalšom teoretickom generovaní príspevkov už čerpáme hodnotu zo SESSION. Ja sa prikláňam k tretej variante. Aký máte názor na to vy? |
||
Kcko Profil |
#2 · Zasláno: 22. 8. 2014, 22:31:15
1) Je rychlé dostatečně a vhodné.
2) I tak můžeš, ale ten LIMIT bude pomalejší (budeš muset použít ORDER) 3) Nesmysl, co když během doby co je to uložené v SESSION dojde k novému příspěvku? Hodnota v session se současným stavem nebude korespondovat. 1! |
||
Marti_n Profil |
#3 · Zasláno: 22. 8. 2014, 22:54:42
Jasné, tá 3-ka má tú nevýhodu, takže ostanem u 1-ky.
|
||
joe Profil |
#4 · Zasláno: 22. 8. 2014, 23:12:22
Není jednodušší vždy vybrat o jeden řádek navíc a zobrazit požadovaný počet?
Tzn., že pokud chceš 20 záznamů zobrazit a pak ukázat tlačítko pro načtení dalších, vyberu z databáze 21 záznamů, zobrazím jich 20, pokud jich je ve skutečnosti 21, tak vím, že tlačítko mám zobrazit. |
||
Marti_n Profil |
#5 · Zasláno: 23. 8. 2014, 00:31:33
No to čo si napísal je podobné variante 2, ale podľa mňa by to nebolo dobré, lebo vyťahujem okolo 5 stlpcov na riadok. Takže keď tak by som spravil nový sql dotaz a to "SELECT id FROM ... LIMIT 20,1" .
|
||
Alphard Profil |
#6 · Zasláno: 23. 8. 2014, 00:38:48
Jestli ty sloupce nemají aspoň desítky kilo, tak takové hlouposti neřeš :-) Řešení v [#4] joe se mi zdá velmi dobré, zřejmě lepší než další dotaz.
|
||
Marti_n Profil |
#7 · Zasláno: 23. 8. 2014, 01:00:37
To riešenie od joe, má svoju výhodu, že všetko sa ťahá jedným dotazom :) Ono teoreticky by sa dala použiť aj tretia varianta, pretože príspevky su zoradené od najnovších. Teda generujú sa už iba staršie príspevky.
|
||
Alphard Profil |
#8 · Zasláno: 23. 8. 2014, 01:27:54
Já jsem snažil spíš naznačit, že tyto „optimalizace“ jsou spíš ztrátou času programátora.
Pokud jde o 3. bod, souhlasím s [#2], že je to nesmysl. Spíš ale kvůli pracnosti to programovat a udržovat, nedělal bych to. |
||
Marti_n Profil |
#9 · Zasláno: 23. 8. 2014, 02:40:16
Ja som to pochopil čo si chcel/chceli naznačiť :) Čas pritom nestrácam, len ma to zaujímalo ako to vidíte vy ostatní, ale rozhodol som sa to vyriešiť ako písal joe. Teda vytiahnem 21 príspevkov a podľa toho zobrazím button.
|
||
joe Profil |
#10 · Zasláno: 23. 8. 2014, 09:07:12
Záleží o jaký výpis jde, ale dobré může být, aby ten poslední záznam nebyl úplně zahozen ho zobrazit jen z části, například jako je na sbazar.cz a zaskroluješ dolů, uživatel už tak dostává dobrý pocit, že seznam pokračuje :-)
|
||
Časová prodleva: 10 let
|
0