Autor Zpráva
Tops
Profil *
Ahoj, co je lepší, 5 x se připojit do mysql a získat pokaždé jeden žádek, nebo se připojit jednou, načíst 100 řádku a 5x procházet načtené pole ? Děkuji
fandaa
Profil
Tops:
Pokud je možné vybrat 100 řádků a v nich data najít při procházení, co je za problém připsat vyhledávací podmínku do SQL dotazu, která vybere zadaných 5 řádků v jednom dotazu?
Tops
Profil *
fandaa:
Díky za příspěvek, ale drž se prosím dotazu a nehledej prosím další akternativa, vím, že je aplikace špatně napsána ale já to nijak neovlivním. Děkuji.
Alphard
Profil
To nejde obecně říct. Záleží to na konkrétním případě.

Nabízí se otázka, jestli je těch 100 řádků konstantních, nebo se to po roce provozu systému rozroste na 1000. S tím souvisí i objem dat v jednom řádku, určitě bych nenačítal např. 100 dlouhých článků...

Z pohledu výkonu: Každý dotaz stojí nějakou režii, ale také není vhodné zbytečně přenášet velké objemy dat. Opravdu je třeba hledat kompromis pro konkrétní aplikaci, ten zjistíte sledováním výkonu, např. změřením času, jak dlouho to trvá. Třeba známé NotORM nesestavuje komplikovaný dotaz, ale spojování provádí až v aplikaci.

Z pohledu návrhu: Jestli ta data spolu souvisí (patří do jednoho modulu), není problém vybrat je nějak centrálně. Kdyby šlo do nesouvisející data do různých částí aplikace, bude lepší omezit závislosti a vybrat je samostatně.
Tops
Profil *
Tak si odpovím sám, pomocí této class jsem zjistitl, že je cca 300x rychlejší načíst 100 řádků a pak 5x procházet pole k získání vždy jednoho řádku než 5x posílat požadavek do mysql k získání vždy jednoho řádku.. Hm k čemu pak ty DB jsou, když jsou to takové lemry líné :-D


Alphard:
Děkuji za informace, máš pravdu, že se to nedá říct přesně, vždy záleží na spoustě okolností ale tak jak jsem zjistil, pokud jak píšeš ty a nejedná se o dlouhé řádky v mysql tak je lepší je načíst jedním vrzem a pak procházet pole.
Alphard
Profil
Tops:
Hm k čemu pak ty DB jsou, když jsou to takové lemry líné
Hmm, zkuste si načíst do pole cca miliardu záznamů a pak je procházet :-) Dotaz napsaný tak, že využije indexy, nemá ani s takovým objemem dat zásadní problém.
Tops
Profil *
Alphard:
Zkoušel jsem nedávno cca 1000 záznamů procházet polem a 1000 záznamů získat z mysql a procházení polem již bylo zdlouhavé přesto bylo ještě rychlejší než mysql. Nevím teda jak můžou indexy tak moc ovlivnit rychlost, jelikož absolutně netuším k čemu slouží a jak se používají...
Alphard
Profil
Tops:
Věřte, že databáze jsou velmi mocný nástroj pro správu dat, které umí mnoho věcí, o kterých možná ani nevíte, že existují.
Konkrétně indexy jsou určité klíče na data, které umožňují manipulaci s nimi, aniž by bylo třeba pro danou operaci procházet celý objem dat. Takže např. při vrácení 10 nějak specifikovaných záznamů z databáze (s dobře navrženými indexy) by mělo být rychlejší, než iterace nad celou množinou dat a vybírání záznamů splňujících danou podmínku. 1000 záznamů by už mohla být hranice, od které se to vyplatí, ale zase závisí na konkrétním případě.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: