Dajú sa nejako zapísať aliasy stĺpcov
- David Matějka
- Moderator | 6445
Jen upozornim, ze je to proti filozofii nette\database
viz https://doc.nette.org/…ase/explorer
Hlavní myšlenkou je načítání dat pouze z jedné tabulky a tak, aby se tyto dotazy pokládaly jen jednou.
- Čamo
- Člen | 798
matej21:
No lenže dnes som videl taký jeden dotaz, ktorý mal v klauzule in asi
30 čísel.
To sa mi moc nepozdáva.
Edit:
Ale berte to ako teoretickú otázku, lebo ten dotaz bol v rámci testu
EDIT2
Ale nesedí mi tam hlavne jedna vec. Totiž výbery z DB by mali byť podľa
mňa v modely. Takto sa časť tej logiky dostáva do šablón. to by som rád
eliminoval.
Editoval Čamo (2. 8. 2014 12:14)
- Mysteria
- Člen | 797
Hlavně AS je nepovinný, takže je vůbec zbytečný ho tam psát ať už malýma nebo velkýma.
Tou logikou myslíš to vytažení dodatečných informací až v šabloně? Ale to tě přece nemusí zajímat – protože nikde nemáš v šabloně napsán přece samotný select, ne? Pokud by jsi to chtěl mít opravdu jenom v modelu, tak se taky vlastně nemůžeš používat ani v šabloně related a podobný věci.
- Mysteria
- Člen | 797
@Čamo: Tvůj problém s NDBT vidím spíš s v tom, že ji snažíš používat stejný způsobem, jakým jsi používal připojení k databázi někde dřív. A to je prostě blbost. Sám jsem na tom byl stejně.
@CZechBoY: Na co bys potřeboval explicitně join? Stačí přidat do selectu, podmínky, řazení jinou tabulku a najoinuje se sama. Jediný co by osobně bylo fajn mít možnost si vybrat mezi LEFT a RIGHT JOIN, ale zase není problém to používat jenom z jednoho směru.
- vvoody
- Člen | 910
CZechBoY napsal(a):
Selectuj prostě jen to co chceš a na join kašli.
Ikdyž by to bylo stokrát lepší, protože pak máš 10 dotazů místo 1, ale tak autoři knihovny si asi myslí že to je lepší ;-)
Nenapadlo ťa že by za tým mohli byť implementačné problémy a nie len to že to proste autor nechcel? NDBT nieje „hlúpy“ skladač dotazov ako dibi, takže nieje možné nechať programátorovi úplne volnú ruku pri vytváraní dotazov.
- jannek19
- Člen | 47
Proč tak NDBT funguje? Funguje tak proto, aby se přenášelo minimum duplicitních dat mezi aplikací a databází (k čemuž při JOINování častokrát dochází) a aby ti počet dotazů neulétl do neúnosných mezí (např. při dotazování v cyklu). Ale to je všechno v dokumentaci. NDBT původně vychází z NotORM od Jakuba Vrány, který NotORM na blogu představoval s tím, že si NotORM napsal proto, aby už nikdy nemusel napsat žádný JOIN. Spoustu info o způsobu fungování najdeš na Jakubově blogu. Sice se v současné době implementačně NDBT a NotORM asi už poměrně dost liší, ale základní myšlenky by měly pořád stejné.
Problém je v tom, že řada lidí používá NDBT na něco na co se IMHO úplně nehodí. NDBT je naprosto úžasná vrstva pro procházení dat v databázi (tolikrát v dokumentaci zmiňované autoři / překladatelé / knihy / tagy), kdy si data z tabulky a navazující záznamy můžete pomocí intuitivní a snadné syntaxe procházet a vypisovat v aplikaci křížem krážem do zblbnutí. Když potřebujete položit vlastnoruční dotaz do DB, napište si SQL a použijte NDB, ale netahejte do toho a nesnažte se přiohnout NDBT.
- Mysteria
- Člen | 797
CZechBoY napsal(a):
Např. že se mi homepage generuje z 5 query místo jednoho :-(
Takže radši uděláš 1 dotaz, který zabere plácnu 5ms místo 5 dotazů, který dohromady zaberou třeba 2ms? Jenom proto, aby jsi tam měl jeden dotaz? No nemůžu se ti divit, v začátcích jsem taky tak přemýšlel, ale rozhodně neplatí že 1 join dotaz bude rychlejší než X dotazů, které dělá NDBT. Samozřejmě určitě záleží na samotné DB, to chce otestovat :)
Editoval Mysteria (2. 8. 2014 18:58)
- Čamo
- Člen | 798
Neverím, že položiť dva dotazy z ktorých sa druhý musí vygenerovať
cez php je porovnateľné s joinom. Fakt by to chcelo nejaké testy nech aj my
lamy máme dušu namieste. Takéto veci sú pre mňa ako konvertovať na Islam.
Celé roky študujem sql a spájanie tqbuliek a zrazu toto.
Rád by som si prečítal ten text kde J. Vrána píše, že už nechce písať
spojenia.
Editoval Čamo (2. 8. 2014 20:58)
- japlavaren
- Člen | 404
pripojim sa aj ja:
- v tutorialoch je casto zle pouzivane, ze by sa mal vytvarat maly pocet dotazov. spravne by malo byt konstantny pocet dotazov
- join cez 3 tabulky ktory musi vyrtualne spojit milion dotazov je vyrazne pomalejsi, ako niekolko malych dotazov
- pri joine tahame pre kazdu tabulku duplicitne data (3× rovnaky nazov kategorie, 7× nazov druhej). nette database stiahne len co treba a paruje to az v php