Ik vroeg mij af of er verschil in snelheid zat, en zoja, hoeveel tussen de volgende 2 constructies.

$result = mysql_query("SELECT `id` FROM `tabel1` WHERE `parent`=" . addslashes($_GET['cat']));
while($row = mysql_fetch_assoc($result)){

$result2 = mysql_query("SELECT `id` FROM `tabel1` WHERE `parent`=" . $row['id']);
while($row2 = mysql_fetch_assoc($result2)){

#doe iets

}

}

of

$array = array();
$result = mysql_query("SELECT `id` FROM `tabel1` WHERE `parent`=" . addslashes($_GET['cat']));
while($row[] = mysql_fetch_assoc($result)){

$array[] = $row[count($row) - 1]['id']

}
$result2 = mysql_query("SELECT `id` FROM `tabel1` WHERE `parent` IN(" . implode(', ', $array[]) . ")");
while($row2 = mysql_fetch_assoc($result2)){

#doe iets

}

Die 1e duidelijk niet, je voert dan de hele tijd (het aantal records dat geselecteerd is door de query) query2 uit.

2!
Domme vraag, dit kun je zelf testen!

Offtopic: geen gore backtics ` in je queries zetten!

Edit: Een subquery lijkt mij overigens op zijn plaats. Scheelt je een query vanuit php richting de database.
OVer die performance hoef je je niet zo druk te maken, een server kan honderden query's per seconde verwerken.

Waar je in dit geval beter op kan letten is het controleren van je query's ze lukken niet altijd natuurlijk en dan klopt er niks van je output(als deze er wel is).
Gewoon even een testcase maken en testen maar.
Bedankt voor de reacties

Wat is er trouwens mis met die backticks?
Ferdy schreef op 13.04.2007 14:11
Wat is er trouwens mis met die backticks?
Alles!

Hoewel, het is ook niet tegen de wet om in je eigen bed te pissen, het gebruik van backtics is evenmin verboden.

Kom alleen niet zeuren dat je vervolgens hopeloos in de problemen komt, die heb je net zelf aangemaakt.
frank ik ben trots op je. you've learned well young one
ik bedoelde meer wat het nadeel van het gebruik ervan is
het is niet de standaard. tis omslachtig, niet nodig en door mysql verzonnen
ah okay, bedankt.

Nooit geweten

Reageren