pomalé dibi fetchAll a fetchAssoc

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kaniobal
Člen | 5
+
0
-

Ahoj,
řeším problém s fetchAssoc, resp fetchAll() – jedno nebo druhé spolkne necelé 2 sekund, přičemž dotaz samotný trvá řádově jednotky až desítky milisekund. Dá se něco někde nastavit tak, aby to fungovalo rychleji?

David Matějka
Moderator | 6445
+
0
-

a kolik radku z ty databaze tahas? :)

kaniobal
Člen | 5
+
0
-

matej21 napsal(a):

a kolik radku z ty databaze tahas? :)

ahoj,
cca 1600

Editoval kaniobal (2. 9. 2013 20:07)

enumag
Člen | 2118
+
0
-

Tak to se nedivím. Čas dotazu měří jak dlouho trvá databázi data najít, ale ve chvíli kdy databáze data najde (což je díky indexům rychlé) je ještě aplikace nemá – ta si je může tahat třeba po jednom postupně až když potřebuje takže to vlastně měřit ani nejde. To co trvá ty dvě vteřiny není samotný dotaz ale přesun dat z databáze do aplikace protože zmíněné dvě metody tahají všechny řádky najednou. Při tomto množství by ale možná bylo lepší tahat je po jednom v cyklu metodou fetch.

Editoval enumag (2. 9. 2013 20:18)

AaAAb
Člen | 6
+
0
-

A kolik ty řádky obsahují dat? Nepomohlo by optimalizovat množství dat přes SELECT a vyjmenování sloupců? Párkrát jsem byl nucený z databáze tahat a zpracovávat také dost řádku (cca 5000 při velikosti data do 1kb na řádek) a jako nejrychlejší mi vyšlo si z vytáhnout přímo pdoStatement a nad tím data získat přes fetchAll(PDO::FETCH_OBJ);

edit: v dibi to možná bude podobné, ale nedoporučuji obcházet rozhranní dibi a přistupovat přímo na funkce driveru. Cachování by to mohlo vyřešit…

Editoval AaAAb (10. 9. 2013 17:53)