Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před rokem

bene
Člen
Registrovaný: 24. 3. 2010
Příspěvky: 52

->fetchAll($offset, $limit) VS ->limit($limit)->offset($offset)->fetchAll()

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í :-).

 

#2 před rokem

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5563

Re: ->fetchAll($offset, $limit) VS ->limit($limit)->offset($offset)->fetchAll()

Už si nepamatuju, k čemu to bylo, tak jsem to dal pryč.

 

Zápatí