» »

PHP in MySQL in hitrost nalaganja

PHP in MySQL in hitrost nalaganja

cahahopie ::

Mene zanima kako vplivajo query-ji baze na hitrost nalaganja pejđa. To da vplivajo vem, sam kolikšno število bi jih naj bilo, da bi stran delala v merah normale?
Npr... imam takole:
v eni stari kodi...
$sql = mysql_query("SELECT id FROM tabela");
$stevilo = mysql_num_rows($sql);
a sedaj včasih pišem takole:
$sql = mysql_query("SELECT count(id) FROM tabela");
while($row = mysql_fetch_array($sql))
{
$stevilo = $row["count(id)"];
}
Sedaj pa mi prosim povejte. A gre pri prvem za dva queryja? Ker enkrat selekta in nato še prešeteje? Ker je pri zadnjem.. preveč pisanja... :D
No to me zanima, ker imam na posameznem pejđu veliko queryev in od tega jih je samo v glavi.php, ki je vsepovsod inkludana kar 10-12. Nato so še funkcije, ki so vnešene in imajo svoje querje in potem samo v posameznem fajlu...
Vsekakor ne gre to za neke brezvezne querje.. kolikor se da ..preoblikujem kodo tako, da jih je čim manj. Pa saj veste kako se cukri™..(št. prijavljenih.. št. včalnjenih.. št. postov... št. privatnih sporočil.. št. onega in št. drugega.. :D ).

In kako mi je to prišlo na misel? V phpBB2.0 imajo nekako tako narejeno, da ti na koncu pejđa izpiše št. querjev... in jih je izpisalo 8. Haa?? Pa obstaja kakšna funkcija, ki bi querje preštela... (če pa RTFM.. pa se opravičujem:D ).

darh ::

najprej štetje queryjev in phpBB 2
ce me spomin ne vara ima phpBB en svoj engine za komunikacijo z bazo (ki sicer se vedno uporablja mysql funkcije v PHPju), le-ta pa belezi kolk queryjev je bilo izvrsenih.. to je ves trik... in ce me spomin se vedno ne vara v manualu ni dokumentirane nobene stvari ki bi stela querye/session...

zdj pa glede tvojih selectov... ce hoces resno naspidirati tale code snippet k si ga prilepu.. pol narediš takole:

list( $count_id ) = mysql_fetch_row( mysql_query( "SELECT count(id) FROM tabela" ) );

zadeva ne sodi ravno med lepo programiranje, ampak je efektivna...

predlagam ti (kot me je pred davnimi časi podučil Primož), da uporabljaš mysql_fetch_row() funkcijo, saj je hitrejša, ker večina drugih mysql_fetch_*() varjant vsakič sproti pobere še ime stolpca... to pa pomeni več rama... kar pa ni dobro seveda...

kot vidiš mysql_fetch_row() vrne index array (ne assoc) z 0 .. n indexi selectanih stolpcov... pol pa postaviš to za list() in notr namečeš spremenjivke... isto lahko narediš v while zanki:

while( list( $nekej, $nekej2 ) = mysql_fetch_row( $mysql_result ) )
{
...
}

še nekej... če narediš svoj primerček po prvem stilu, PHP pošlje request po vseh id fieldih v neki tabeli in jih tudi vrne, te pa potem mysql_num_rows() prešteje in vrne število vseh...
medtem ko pri drugi pošlješ mysqlu zahtevek da naj on prešteje vse vrstice.. kar je verjetno hitrejše a ? še posebej ker dobiš direktno nazaj število vrstic...
Excuses are useless! Results are priceless!

cahahopie ::

Hvala... lepo napisano in objasneno... dej napiš še kak tutotrial v prostem času!

darh ::

mogoće pa celo res... ampak le če bo dovolj zanimanja :)

ker sam zate cahahopie... ga ne bom pisal :P
Excuses are useless! Results are priceless!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[mySQL(+php)] Kako dobiti največji ID (številka) iz stolpca

Oddelek: Izdelava spletišč
91121 (1000) preem
»

php variable scope problem

Oddelek: Izdelava spletišč
81258 (1171) darh
»

Kaj je narobe tu...(php)

Oddelek: Programiranje
51191 (1089) teac
»

Rezanje teksta

Oddelek: Programiranje
9988 (897) darh
»

Zakaj? (php & mySQL)

Oddelek: Programiranje
51217 (1144) darh

Več podobnih tem