Oznámení
->fetchAll($offset, $limit) VS ->limit($limit)->offset($offset)->fetchAll()
před 9 lety
- bene
- Člen | 83
Zdravím,
při použití $fluent->fetchAll(0, 10)
MySQL vrací např.
60 řádků, ale dibi vytáhne jen 10.
Při použití
$fluent->limit(10)->offset(0)->fetchAll()
vrací MySQL
10 řádků a dibi vytáhne 10 řádků.
Z výkonového a paměťového hlediska je dle mě výhodnější druhý zápis.
Otázka zní: Kdy je žádoucí chování prvního příkladu? Napadá mě
jen, že bych si vytáhl oněch 60 řádků a pak nad resultsetem např. 3×
zavolal fetchAll
a vytahoval si 5 řádků z jiným offsetem a
tyto výsledky k něčemu použil. Tento příklad jsem si ale musel vymyslet,
reálně si nevzpomínám, že bych na něj narazil.
Z toho vyplývá druhá otázka: Je k něčemu první zápis? Já osobně
bych uvítal přidání třetího parametru u fetchAll, který by mi určoval
chování získávání resultsetu (defaultně nastavený na chování druhého
příkladu).
Možná jsem ale úplně mimo a něco mi uniká nebo paměťová a výkonová
náročnost je zanedbatelná (mě z několika refresh vysla asi 2× vetší,
zrovna u těch 60 záznamů…ale stále šlo o jednotky milisekund, pam.
náročnost jsem netestoval).
Budu rád, pokud mi někdo tuto problematiku objasní :-).
před 9 lety
- David Grudl
- Nette Core | 6806
Už si nepamatuju, k čemu to bylo, tak jsem to dal pryč.