Pouzitie pagination bez offsetu pre velke DB
- duskohu
- Člen | 778
Caute, pouzivam klasicky Paginator napr. tento, mam to potom napojene na kdyby/doctrine a nasledne pouzivam bud:
...
$resultSet = $query->getResult();
$resultSet->applyPaginator($paginator);
...
alebo si vytvaram query nejaky builder a vlozim `firstResult` a `maxResults`
$query = $this->em->getRepository(Tour::class)
->createQueryBuilder()
->select('q')
->from(Tour::class, 'q')
->andWhere('q.publicity = :publicity')
->setParameter('publicity', Tour::PUBLICITY_PUBLIC)
->setFirstResult($paginator->getOffset())
->setMaxResults($paginator->getLength());
Problem je v tom ze tento system funguje na principe LIMIT
,
OFFSET
a ked mam uz velky pocet zaznamov co ja mam okolo
2000000
tak to strankovanie skoncilo :-).
Neviiete mi poradit nejake funkcne riesenie, kto ma uz skusenost a pouzitie paginatora?
- David Matějka
- Moderator | 6445
a potrebujes tak velke offsety? pokud nekdo potrebuje strankovat vice jak deset stranek, tak je spise spatne navrzene rozhrani (chybejici filtrovani, razeni). ani google ti nedovoli strankovat do nekonecna :)
pro urcite situace muze byt vhodne strankovat pres ID, tedy vybrat vzdy prvnich 10, ktere maji ID vetsi/mensi nez posledni zaznam na predchozi strance (v url tedy nebudes prenaset offset, respetkive page, ale to dane id)
jinak ResultSet z kdyby/doctrine se muze zrychlit nastavenim vypnutim
setFetchJoinCollection
a setUseOutputWalkers
– ale
pozor, je mozne to vypnout pouze v pripade, ze nejoinujes „has
many“ relace
- Kcko
- Člen | 468
David Matějka napsal(a):
a potrebujes tak velke offsety? pokud nekdo potrebuje strankovat vice jak deset stranek, tak je spise spatne navrzene rozhrani (chybejici filtrovani, razeni). ani google ti nedovoli strankovat do nekonecna :)
Davide, toto mě zaujalo.
Jak mám dle tvé idey přepracovat stránkování kategorie článků? http://spanelskyfotbal.cz/…era-division
- David Matějka
- Moderator | 6445
@Kcko je nejaky duvod, aby nekdo klikal na stranu 353?
takze co muzes udelat:
- odebrat proklik na posledni stranku
- zvazit i odebrani toho strankovani o nekolik stranek dobredu a nechat tam jen predchozi/nasledujici
- pridat nejake filtrovani dle data, treba jen dle roku
- Kcko
- Člen | 468
David Matějka napsal(a):
@Kcko je nejaky duvod, aby nekdo klikal na stranu 353?
takze co muzes udelat:
- odebrat proklik na posledni stranku
- zvazit i odebrani toho strankovani o nekolik stranek dobredu a nechat tam jen predchozi/nasledujici
- pridat nejake filtrovani dle data, treba jen dle roku
Asi máš pravdu, vhodnější bude prvních X článků a pak proklik do archivu a tam to nějak šikovně vyobrazit podle roků a měsíců. Díky.
Zrealizováno ;-) http://spanelskyfotbal.cz/archiv-clanku je to asi vážně lepší.
Editoval Kcko (24. 4. 2018 17:07)
- duskohu
- Člen | 778
@David Matějka dakujem za odpoved, konkterne ide o portal kde je ponuka zajazdov, a normalne clovek nestrankuje do nekonecna, ja mam aj filter a radenie, ale ide mi o roborov ktory prechadzaju stranku a kedze mam aj stranku kde je filter bez dat tak sa daju strankovat vsetky ponuky, a to chcem aby robot presiel.
to sideckami sa mi paci, nerobili ste toto riesenie niekto s paginatorom?
Editoval duskohu (20. 4. 2018 22:52)