Komponenty pro zobrazení výsledků dotazu
- Ondřej Altman
- Člen | 17
Zdravím, prosim o radu ohledně komponent a DiBi.
- Mám komponentu ‚seznam_vysledku‘, která zjistí ID všech řádků které odpovídají SELECT dotazu.
- V té přes UI\Multiplier vytvářím komponenty ‚vysledek‘, které v konstruktoru dostávají ID řádku v databázi a sama komponenta si vytáhne z DB data pro dané ID
Problém:
Když budu mít na stránce 50 komponent ‚vysledek‘, tak se mi 50× pošle do DB ten samej SELECT. (velká zátěž na DB? )
Jako první mě napadlo vytáhnout všechny data už přes komponentu ‚seznam_vysledku‘ a v komponentě ‚vysledek‘ už je jen zobrazit. Jenže tim bych přišel o možnost používat komponentu ‚vysledek‘ nezávisle na její nadřazené komponentě (nedokáže si sama zjistit data, které má obsahovat)
Jak tohle řešíte vy?
- Ondřej Altman
- Člen | 17
Vyzkouším, díky.
Ještě mě napadlo..kdyby v budoucnu tam přibyla ještě jedna dvojice komponent
projekty_seznam
>projekt-1
>> fotogalerie
>>> fotka-1
>>> fotka-2
>projekt-2
>> fotogalerie
>>> fotka-1
>>> fotka-2
>>> fotka-3
Dá se to taky zvládnout jedním dotazem?
Editoval Ondřej Altman (19. 6. 2012 17:14)
- Ondřej Altman
- Člen | 17
jtousek napsal(a):
Mám pocit že když by první dotaz natahal rovnou i data, tak další dotazy by se už nemusely spouštět protože by to bylo v cache.
Trochu teď nerozumím, jakým způsobem tedy můžu k těm datům přistoupit?
- Ondřej Altman
- Člen | 17
jtousek napsal(a):
Normálně přes SQL dotaz. Až na to, že ten SQL dotaz by se neměl provést protože potřebná data by Nette\Database měla najít v cache.
A dá se to nějak vyřešit i pro DiBi? (Pokud teda správně předpokládam, že Nette\Database != DiBi)
- jtousek
- Člen | 951
Aha ty to vlastně píšeš hned v prvním příspěvku že používáš dibi, to pardon. Bohužel s dibi jsem nepracoval už ani nepamatuju takže nevím. Spíše ale počítej, že ne, myslím že dibi v sobě žádnou cache implementovanou nemá.
Jedno si ale odpustit nemohu – a to doporučení přechodu na Nette\Database. ;-)
- Ondřej Altman
- Člen | 17
jtousek napsal(a):
Aha ty to vlastně píšeš hned v prvním příspěvku že používáš dibi, to pardon. Bohužel s dibi jsem nepracoval už ani nepamatuju takže nevím. Spíše ale počítej, že ne, myslím že dibi v sobě žádnou cache implementovanou nemá.
Jedno si ale odpustit nemohu – a to doporučení přechodu na Nette\Database. ;-)
Díky za radu, pouvažuju o tom :)