random functie MySQL betrouwbaar?
Nu is het mij alleen opgevallen dat deze winnaar steeds gekozen wordt uit een van de laatst toegevoegde records. Ik heb nu 3 trekkingen gehad, en daarbij was het als volgt
4e vanaf het eind geteld
2e vanaf het eind geteld
4e vanaf het eind geteld
Ik vraag me dus af of de random functie van MySQL wel zo random is?
ik gebruik deze als volgt
Als dat je Query is dan moet dat gewoon werken en is het toeval dat dat zo is gebeurd.
Ga eens gestructureerd testen: een keer of duizend de query uitvoeren levert een stuk betere resultaat op dan 3x...
dit artikel over het hoe-en-waarom.
Aanvulling: RAND() is overigens geen goed plan, het is een regelrechte aanslag op de performance van de database. Zie Frank schreef op 13.02.2007 18:05:
Aanvulling: RAND() is overigens geen goed plan, het is een regelrechte aanslag op de performance van de database. Zie dit artikel over het hoe-en-waarom.
Ik denk dat het voor dit geval niet zoveel uit maakt omdat hij immers 1 x in de 2 weken die Query uitvoerd ;)
En waarom zou je de database zwaar belasten wanneer dat volkomen overbodig is?
ik zal wel eens kijken of ik zometeen tijd heb om even een scriptje te schrijven en te testen of het echt random is.
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
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$aantal_1 = 0;
$aantal_2 = 0;
$aantal_3 = 0;
$aantal_4 = 0;
for ($i = 0; $i < 100; $i++)
{
$query = mysql_query("SELECT * FROM `rand` ORDER BY RAND() LIMIT 1") or die(mysql_error());
$rand = mysql_fetch_assoc($query);
if($rand['id'] == 1)
{
$aantal_1++;
}
if($rand['id'] == 2)
{
$aantal_2++;
}
if($rand['id'] == 3)
{
$aantal_3++;
}
if($rand['id'] == 4)
{
$aantal_4++;
}
}
echo $aantal_1."% <br />";
echo $aantal_2."% <br />";
echo $aantal_3."% <br />";
echo $aantal_4."% <br />";
$aantal_2 = 0;
$aantal_3 = 0;
$aantal_4 = 0;
for ($i = 0; $i < 100; $i++)
{
$query = mysql_query("SELECT * FROM `rand` ORDER BY RAND() LIMIT 1") or die(mysql_error());
$rand = mysql_fetch_assoc($query);
if($rand['id'] == 1)
{
$aantal_1++;
}
if($rand['id'] == 2)
{
$aantal_2++;
}
if($rand['id'] == 3)
{
$aantal_3++;
}
if($rand['id'] == 4)
{
$aantal_4++;
}
}
echo $aantal_1."% <br />";
echo $aantal_2."% <br />";
echo $aantal_3."% <br />";
echo $aantal_4."% <br />";
Dit zou dus ook zo kunnen zijn met de MySQL funtie ??