Wat moet jij gebruiken?
Met dank aan Jan Koehoorn
Men neme een MyISAM tabel met 200.000 records gevuld met random waarden
Velden: id (INT4),cijfer (INT4), tekst (VARCHAR 255), datum (DATE), tijd1 (TIME), tijd2 (TIME)
Testcode:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require('db_config.php');
function get_microtime()
{
list($usec, $sec) = explode(" ", microtime());
return((float)$usec + (float)$sec);
}
$sql = "
SELECT cijfer, tekst, datum, tijd1, tijd2
FROM phphulp";
if (!($res = mysql_query($sql))) {
trigger_error(mysql_error());
}
else {
$start = get_microtime();
while ($row = mysql_fetch_assoc($res)) {
// deze steeds aangepast
}
$stop = get_microtime();
$tijd = $stop - $start;
echo 'Tijd: ' . $tijd;
}
?>
require('db_config.php');
function get_microtime()
{
list($usec, $sec) = explode(" ", microtime());
return((float)$usec + (float)$sec);
}
$sql = "
SELECT cijfer, tekst, datum, tijd1, tijd2
FROM phphulp";
if (!($res = mysql_query($sql))) {
trigger_error(mysql_error());
}
else {
$start = get_microtime();
while ($row = mysql_fetch_assoc($res)) {
// deze steeds aangepast
}
$stop = get_microtime();
$tijd = $stop - $start;
echo 'Tijd: ' . $tijd;
}
?>
Resultaten:
mysql_fetch_array:
Tijd: 1.04317808151
Tijd: 1.02631306648
Tijd: 1.03138113022
Tijd: 1.01798200607
Tijd: 1.01716589928
mysql_fetch_object():
Tijd: 1.35628700256
Tijd: 1.38205504417
Tijd: 1.38648200035
Tijd: 1.37615299225
Tijd: 1.39009308815
mysql_fetch_assoc():
Tijd: 0.750518083572
Tijd: 0.665653944016
Tijd: 0.712239027023
Tijd: 0.701236963272
Tijd: 0.705749034882
mysql_fetch_row():
Tijd: 0.53831410408
Tijd: 0.535464048386
Tijd: 0.53640294075
Tijd: 0.540419101715
Tijd 0.544956922531
Hier uit kun je concluderen dat mysql_fetch_row() de snelste is van eerdergenoemde manieren. Zelf vind ik dit niet de handigste manier, omdat ik zelf altijd een beetje duizellig wordt van al die nummertjes.
Het liefst gebruik ik zelf mysql_fetch_array(). Ik weet niet precies waarom, maar ik voel mij goed bij het idee dat het niet uitmaak hoe ik de waarden aanroep(geindexeerd of geassocieerd).
Ik hoop dat je wijzer bent geworden van deze tutorial, verder raad ik je aan alles wat ik heb gezegt nog even te proberen, zodat wanneer ik een foutje gemaakt heb in deze tutorial, of als er iets onduidelijk is, je een beetje achtergrond kennis hebt :)
Inhoudsopgave
- Waarom deze tutorial?
- mysql_fetch_array()
- mysql_fetch_assoc()
- mysql_fetch_row()
- mysql_fetch_object()
- Wat moet jij gebruiken?